- Fixed lack of proper error code checking on calls
to user_strlcpy() - Changed all remaining instances of SYS_MAX_PATH_LEN to B_PATH_NAME_LENGTH. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@5152 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -23,6 +23,19 @@ using namespace BPrivate::DiskDevice;
|
|||||||
// debugging
|
// debugging
|
||||||
#define ERROR(x)
|
#define ERROR(x)
|
||||||
|
|
||||||
|
// ddm_strlcpy
|
||||||
|
/*! \brief Wrapper around user_strlcpy() that returns a status_t
|
||||||
|
indicating appropriate success or failure.
|
||||||
|
*/
|
||||||
|
static
|
||||||
|
status_t
|
||||||
|
ddm_strlcpy(char *to, const char *from, size_t size) {
|
||||||
|
int error = user_strlcpy(to, from, size);
|
||||||
|
error = (0 <= error && size_t(error) < size) ? B_OK
|
||||||
|
: (error < B_OK ? error : B_NAME_TOO_LONG);
|
||||||
|
return status_t(error);
|
||||||
|
}
|
||||||
|
|
||||||
// move_descendants
|
// move_descendants
|
||||||
static
|
static
|
||||||
void
|
void
|
||||||
@@ -97,9 +110,10 @@ _kern_find_disk_device(const char *_filename, size_t *neededSize)
|
|||||||
if (!_filename)
|
if (!_filename)
|
||||||
return B_BAD_VALUE;
|
return B_BAD_VALUE;
|
||||||
|
|
||||||
char filename[SYS_MAX_PATH_LEN+1];
|
char filename[B_PATH_NAME_LENGTH];
|
||||||
if (user_strlcpy(filename, _filename, SYS_MAX_PATH_LEN) >= SYS_MAX_PATH_LEN)
|
status_t error = ddm_strlcpy(filename, _filename, B_PATH_NAME_LENGTH);
|
||||||
return B_NAME_TOO_LONG;
|
if (error)
|
||||||
|
return error;
|
||||||
|
|
||||||
partition_id id = B_ENTRY_NOT_FOUND;
|
partition_id id = B_ENTRY_NOT_FOUND;
|
||||||
KDiskDeviceManager *manager = KDiskDeviceManager::Default();
|
KDiskDeviceManager *manager = KDiskDeviceManager::Default();
|
||||||
@@ -127,9 +141,10 @@ _kern_find_partition(const char *_filename, size_t *neededSize)
|
|||||||
if (!_filename)
|
if (!_filename)
|
||||||
return B_BAD_VALUE;
|
return B_BAD_VALUE;
|
||||||
|
|
||||||
char filename[SYS_MAX_PATH_LEN+1];
|
char filename[B_PATH_NAME_LENGTH];
|
||||||
if (user_strlcpy(filename, _filename, SYS_MAX_PATH_LEN) >= SYS_MAX_PATH_LEN)
|
status_t error = ddm_strlcpy(filename, _filename, B_PATH_NAME_LENGTH);
|
||||||
return B_NAME_TOO_LONG;
|
if (error)
|
||||||
|
return error;
|
||||||
|
|
||||||
partition_id id = B_ENTRY_NOT_FOUND;
|
partition_id id = B_ENTRY_NOT_FOUND;
|
||||||
KDiskDeviceManager *manager = KDiskDeviceManager::Default();
|
KDiskDeviceManager *manager = KDiskDeviceManager::Default();
|
||||||
@@ -303,8 +318,9 @@ _kern_register_file_device(const char *_filename)
|
|||||||
if (!_filename)
|
if (!_filename)
|
||||||
return B_BAD_VALUE;
|
return B_BAD_VALUE;
|
||||||
char filename[B_PATH_NAME_LENGTH];
|
char filename[B_PATH_NAME_LENGTH];
|
||||||
if (user_strlcpy(filename, _filename, B_PATH_NAME_LENGTH) >= B_PATH_NAME_LENGTH)
|
status_t error = ddm_strlcpy(filename, _filename, B_PATH_NAME_LENGTH);
|
||||||
return B_NAME_TOO_LONG;
|
if (error)
|
||||||
|
return error;
|
||||||
KDiskDeviceManager *manager = KDiskDeviceManager::Default();
|
KDiskDeviceManager *manager = KDiskDeviceManager::Default();
|
||||||
if (ManagerLocker locker = manager) {
|
if (ManagerLocker locker = manager) {
|
||||||
if (KFileDiskDevice *device = manager->FindFileDevice(filename))
|
if (KFileDiskDevice *device = manager->FindFileDevice(filename))
|
||||||
@@ -325,8 +341,9 @@ _kern_unregister_file_device(partition_id deviceID, const char *_filename)
|
|||||||
return manager->DeleteFileDevice(deviceID);
|
return manager->DeleteFileDevice(deviceID);
|
||||||
} else {
|
} else {
|
||||||
char filename[B_PATH_NAME_LENGTH];
|
char filename[B_PATH_NAME_LENGTH];
|
||||||
if (user_strlcpy(filename, _filename, B_PATH_NAME_LENGTH) >= B_PATH_NAME_LENGTH)
|
status_t error = ddm_strlcpy(filename, _filename, B_PATH_NAME_LENGTH);
|
||||||
return B_NAME_TOO_LONG;
|
if (error)
|
||||||
|
return error;
|
||||||
return manager->DeleteFileDevice(filename);
|
return manager->DeleteFileDevice(filename);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -380,8 +397,9 @@ _kern_find_disk_system(const char *_name, user_disk_system_info *_info)
|
|||||||
if (!_name || !_info)
|
if (!_name || !_info)
|
||||||
return B_BAD_VALUE;
|
return B_BAD_VALUE;
|
||||||
char name[B_OS_NAME_LENGTH];
|
char name[B_OS_NAME_LENGTH];
|
||||||
if (user_strlcpy(name, _name, B_OS_NAME_LENGTH) >= B_OS_NAME_LENGTH)
|
status_t error = ddm_strlcpy(name, _name, B_OS_NAME_LENGTH);
|
||||||
return B_NAME_TOO_LONG;
|
if (error)
|
||||||
|
return error;
|
||||||
KDiskDeviceManager *manager = KDiskDeviceManager::Default();
|
KDiskDeviceManager *manager = KDiskDeviceManager::Default();
|
||||||
if (ManagerLocker locker = manager) {
|
if (ManagerLocker locker = manager) {
|
||||||
if (KDiskSystem *diskSystem = manager->FindDiskSystem(name)) {
|
if (KDiskSystem *diskSystem = manager->FindDiskSystem(name)) {
|
||||||
@@ -683,8 +701,9 @@ _kern_supports_initializing_partition(partition_id partitionID,
|
|||||||
if (_diskSystemName)
|
if (_diskSystemName)
|
||||||
return false;
|
return false;
|
||||||
char diskSystemName[B_OS_NAME_LENGTH];
|
char diskSystemName[B_OS_NAME_LENGTH];
|
||||||
if (user_strlcpy(diskSystemName, _diskSystemName, B_OS_NAME_LENGTH) >= B_OS_NAME_LENGTH)
|
status_t error = ddm_strlcpy(diskSystemName, _diskSystemName, B_OS_NAME_LENGTH);
|
||||||
return false;
|
if (error)
|
||||||
|
return error;
|
||||||
KDiskDeviceManager *manager = KDiskDeviceManager::Default();
|
KDiskDeviceManager *manager = KDiskDeviceManager::Default();
|
||||||
// get the partition
|
// get the partition
|
||||||
KPartition *partition = manager->ReadLockPartition(partitionID);
|
KPartition *partition = manager->ReadLockPartition(partitionID);
|
||||||
@@ -827,8 +846,9 @@ _kern_validate_set_partition_name(partition_id partitionID,
|
|||||||
if (!_name)
|
if (!_name)
|
||||||
return B_BAD_VALUE;
|
return B_BAD_VALUE;
|
||||||
char name[B_OS_NAME_LENGTH];
|
char name[B_OS_NAME_LENGTH];
|
||||||
if (user_strlcpy(name, _name, B_OS_NAME_LENGTH) >= B_OS_NAME_LENGTH)
|
status_t error = ddm_strlcpy(name, _name, B_OS_NAME_LENGTH);
|
||||||
return B_NAME_TOO_LONG;
|
if (error)
|
||||||
|
return error;
|
||||||
KDiskDeviceManager *manager = KDiskDeviceManager::Default();
|
KDiskDeviceManager *manager = KDiskDeviceManager::Default();
|
||||||
// get the partition
|
// get the partition
|
||||||
KPartition *partition = manager->ReadLockPartition(partitionID);
|
KPartition *partition = manager->ReadLockPartition(partitionID);
|
||||||
@@ -848,8 +868,9 @@ _kern_validate_set_partition_content_name(partition_id partitionID,
|
|||||||
if (!_name)
|
if (!_name)
|
||||||
return B_BAD_VALUE;
|
return B_BAD_VALUE;
|
||||||
char name[B_OS_NAME_LENGTH];
|
char name[B_OS_NAME_LENGTH];
|
||||||
if (user_strlcpy(name, _name, B_OS_NAME_LENGTH) >= B_OS_NAME_LENGTH)
|
status_t error = ddm_strlcpy(name, _name, B_OS_NAME_LENGTH);
|
||||||
return B_NAME_TOO_LONG;
|
if (error)
|
||||||
|
return error;
|
||||||
KDiskDeviceManager *manager = KDiskDeviceManager::Default();
|
KDiskDeviceManager *manager = KDiskDeviceManager::Default();
|
||||||
// get the partition
|
// get the partition
|
||||||
KPartition *partition = manager->ReadLockPartition(partitionID);
|
KPartition *partition = manager->ReadLockPartition(partitionID);
|
||||||
@@ -869,8 +890,9 @@ _kern_validate_set_partition_type(partition_id partitionID,
|
|||||||
if (!_type)
|
if (!_type)
|
||||||
return B_BAD_VALUE;
|
return B_BAD_VALUE;
|
||||||
char type[B_OS_NAME_LENGTH];
|
char type[B_OS_NAME_LENGTH];
|
||||||
if (user_strlcpy(type, _type, B_OS_NAME_LENGTH) >= B_OS_NAME_LENGTH)
|
status_t error = ddm_strlcpy(type, _type, B_OS_NAME_LENGTH);
|
||||||
return B_NAME_TOO_LONG;
|
if (error)
|
||||||
|
return error;
|
||||||
KDiskDeviceManager *manager = KDiskDeviceManager::Default();
|
KDiskDeviceManager *manager = KDiskDeviceManager::Default();
|
||||||
// get the partition
|
// get the partition
|
||||||
KPartition *partition = manager->ReadLockPartition(partitionID);
|
KPartition *partition = manager->ReadLockPartition(partitionID);
|
||||||
@@ -894,9 +916,11 @@ _kern_validate_initialize_partition(partition_id partitionID,
|
|||||||
char diskSystemName[B_OS_NAME_LENGTH];
|
char diskSystemName[B_OS_NAME_LENGTH];
|
||||||
char name[B_OS_NAME_LENGTH];
|
char name[B_OS_NAME_LENGTH];
|
||||||
char *parameters = NULL;
|
char *parameters = NULL;
|
||||||
if (user_strlcpy(diskSystemName, _diskSystemName, B_OS_NAME_LENGTH) >= B_OS_NAME_LENGTH
|
status_t error = ddm_strlcpy(diskSystemName, _diskSystemName, B_OS_NAME_LENGTH);
|
||||||
|| user_strlcpy(name, _name, B_OS_NAME_LENGTH) >= B_OS_NAME_LENGTH)
|
if (!error)
|
||||||
return B_NAME_TOO_LONG;
|
error = ddm_strlcpy(name, _name, B_OS_NAME_LENGTH);
|
||||||
|
if (error)
|
||||||
|
return error;
|
||||||
if (_parameters) {
|
if (_parameters) {
|
||||||
parameters = static_cast<char*>(malloc(strlen(_parameters)+1));
|
parameters = static_cast<char*>(malloc(strlen(_parameters)+1));
|
||||||
if (parameters)
|
if (parameters)
|
||||||
@@ -907,7 +931,7 @@ _kern_validate_initialize_partition(partition_id partitionID,
|
|||||||
KDiskDeviceManager *manager = KDiskDeviceManager::Default();
|
KDiskDeviceManager *manager = KDiskDeviceManager::Default();
|
||||||
// get the partition
|
// get the partition
|
||||||
KPartition *partition = manager->ReadLockPartition(partitionID);
|
KPartition *partition = manager->ReadLockPartition(partitionID);
|
||||||
status_t error = partition ? B_OK : B_ENTRY_NOT_FOUND;
|
error = partition ? B_OK : B_ENTRY_NOT_FOUND;
|
||||||
if (!error) {
|
if (!error) {
|
||||||
PartitionRegistrar registrar1(partition, true);
|
PartitionRegistrar registrar1(partition, true);
|
||||||
PartitionRegistrar registrar2(partition->Device(), true);
|
PartitionRegistrar registrar2(partition->Device(), true);
|
||||||
@@ -934,8 +958,9 @@ _kern_validate_create_child_partition(partition_id partitionID,
|
|||||||
char *parameters = NULL;
|
char *parameters = NULL;
|
||||||
user_memcpy(&offset, _offset, sizeof(offset));
|
user_memcpy(&offset, _offset, sizeof(offset));
|
||||||
user_memcpy(&size, _size, sizeof(size));
|
user_memcpy(&size, _size, sizeof(size));
|
||||||
if (user_strlcpy(type, _type, B_OS_NAME_LENGTH) >= B_OS_NAME_LENGTH)
|
status_t error = ddm_strlcpy(type, _type, B_OS_NAME_LENGTH);
|
||||||
return B_NAME_TOO_LONG;
|
if (error)
|
||||||
|
return error;
|
||||||
if (_parameters) {
|
if (_parameters) {
|
||||||
parameters = static_cast<char*>(malloc(strlen(_parameters)+1));
|
parameters = static_cast<char*>(malloc(strlen(_parameters)+1));
|
||||||
if (parameters)
|
if (parameters)
|
||||||
@@ -946,7 +971,7 @@ _kern_validate_create_child_partition(partition_id partitionID,
|
|||||||
KDiskDeviceManager *manager = KDiskDeviceManager::Default();
|
KDiskDeviceManager *manager = KDiskDeviceManager::Default();
|
||||||
// get the partition
|
// get the partition
|
||||||
KPartition *partition = manager->ReadLockPartition(partitionID);
|
KPartition *partition = manager->ReadLockPartition(partitionID);
|
||||||
status_t error = partition ? B_OK : B_ENTRY_NOT_FOUND;
|
error = partition ? B_OK : B_ENTRY_NOT_FOUND;
|
||||||
if (!error) {
|
if (!error) {
|
||||||
PartitionRegistrar registrar1(partition, true);
|
PartitionRegistrar registrar1(partition, true);
|
||||||
PartitionRegistrar registrar2(partition->Device(), true);
|
PartitionRegistrar registrar2(partition->Device(), true);
|
||||||
@@ -990,8 +1015,7 @@ _kern_get_next_supported_partition_type(partition_id partitionID,
|
|||||||
char type[B_OS_NAME_LENGTH];
|
char type[B_OS_NAME_LENGTH];
|
||||||
error = diskSystem->GetNextSupportedType(partition, &cookie, type);
|
error = diskSystem->GetNextSupportedType(partition, &cookie, type);
|
||||||
if (!error) {
|
if (!error) {
|
||||||
error = user_strlcpy(_type, type, B_OS_NAME_LENGTH) < B_OS_NAME_LENGTH
|
error = ddm_strlcpy(_type, type, B_OS_NAME_LENGTH);
|
||||||
? B_OK : B_NAME_TOO_LONG;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1009,8 +1033,9 @@ _kern_get_partition_type_for_content_type(disk_system_id diskSystemID,
|
|||||||
if (!_contentType || !_type)
|
if (!_contentType || !_type)
|
||||||
return B_BAD_VALUE;
|
return B_BAD_VALUE;
|
||||||
char contentType[B_OS_NAME_LENGTH];
|
char contentType[B_OS_NAME_LENGTH];
|
||||||
if (user_strlcpy(contentType, _contentType, B_OS_NAME_LENGTH) >= B_OS_NAME_LENGTH)
|
status_t error = ddm_strlcpy(contentType, _contentType, B_OS_NAME_LENGTH);
|
||||||
return B_NAME_TOO_LONG;
|
if (error)
|
||||||
|
return error;
|
||||||
KDiskDeviceManager *manager = KDiskDeviceManager::Default();
|
KDiskDeviceManager *manager = KDiskDeviceManager::Default();
|
||||||
// get the disk system
|
// get the disk system
|
||||||
KDiskSystem *diskSystem = manager->LoadDiskSystem(diskSystemID);
|
KDiskSystem *diskSystem = manager->LoadDiskSystem(diskSystemID);
|
||||||
@@ -1020,8 +1045,7 @@ _kern_get_partition_type_for_content_type(disk_system_id diskSystemID,
|
|||||||
// get the info
|
// get the info
|
||||||
char type[B_OS_NAME_LENGTH];
|
char type[B_OS_NAME_LENGTH];
|
||||||
if (diskSystem->GetTypeForContentType(contentType, type)) {
|
if (diskSystem->GetTypeForContentType(contentType, type)) {
|
||||||
user_strlcpy(_type, type, B_OS_NAME_LENGTH);
|
return ddm_strlcpy(_type, type, B_OS_NAME_LENGTH);
|
||||||
return B_OK;
|
|
||||||
}
|
}
|
||||||
return B_ERROR;
|
return B_ERROR;
|
||||||
}
|
}
|
||||||
@@ -1244,8 +1268,9 @@ _kern_set_partition_name(partition_id partitionID, int32 changeCounter,
|
|||||||
if (!_name)
|
if (!_name)
|
||||||
return B_BAD_VALUE;
|
return B_BAD_VALUE;
|
||||||
char name[B_OS_NAME_LENGTH];
|
char name[B_OS_NAME_LENGTH];
|
||||||
if (user_strlcpy(name, _name, B_OS_NAME_LENGTH) >= B_OS_NAME_LENGTH)
|
status_t error = ddm_strlcpy(name, _name, B_OS_NAME_LENGTH);
|
||||||
return B_NAME_TOO_LONG;
|
if (error)
|
||||||
|
return error;
|
||||||
KDiskDeviceManager *manager = KDiskDeviceManager::Default();
|
KDiskDeviceManager *manager = KDiskDeviceManager::Default();
|
||||||
// get the partition
|
// get the partition
|
||||||
KPartition *partition = manager->WriteLockPartition(partitionID);
|
KPartition *partition = manager->WriteLockPartition(partitionID);
|
||||||
@@ -1257,7 +1282,7 @@ _kern_set_partition_name(partition_id partitionID, int32 changeCounter,
|
|||||||
// check name
|
// check name
|
||||||
char proposedName[B_OS_NAME_LENGTH];
|
char proposedName[B_OS_NAME_LENGTH];
|
||||||
strcpy(proposedName, name);
|
strcpy(proposedName, name);
|
||||||
status_t error = validate_set_partition_name(partition, changeCounter,
|
error = validate_set_partition_name(partition, changeCounter,
|
||||||
proposedName);
|
proposedName);
|
||||||
if (error != B_OK)
|
if (error != B_OK)
|
||||||
return error;
|
return error;
|
||||||
@@ -1281,8 +1306,9 @@ _kern_set_partition_content_name(partition_id partitionID, int32 changeCounter,
|
|||||||
if (!_name)
|
if (!_name)
|
||||||
return B_BAD_VALUE;
|
return B_BAD_VALUE;
|
||||||
char name[B_OS_NAME_LENGTH];
|
char name[B_OS_NAME_LENGTH];
|
||||||
if (user_strlcpy(name, _name, B_OS_NAME_LENGTH) >= B_OS_NAME_LENGTH)
|
status_t error = ddm_strlcpy(name, _name, B_OS_NAME_LENGTH);
|
||||||
return B_NAME_TOO_LONG;
|
if (error)
|
||||||
|
return error;
|
||||||
KDiskDeviceManager *manager = KDiskDeviceManager::Default();
|
KDiskDeviceManager *manager = KDiskDeviceManager::Default();
|
||||||
// get the partition
|
// get the partition
|
||||||
KPartition *partition = manager->WriteLockPartition(partitionID);
|
KPartition *partition = manager->WriteLockPartition(partitionID);
|
||||||
@@ -1294,7 +1320,7 @@ _kern_set_partition_content_name(partition_id partitionID, int32 changeCounter,
|
|||||||
// check name
|
// check name
|
||||||
char proposedName[B_OS_NAME_LENGTH];
|
char proposedName[B_OS_NAME_LENGTH];
|
||||||
strcpy(proposedName, name);
|
strcpy(proposedName, name);
|
||||||
status_t error = validate_set_partition_content_name(partition,
|
error = validate_set_partition_content_name(partition,
|
||||||
changeCounter, proposedName);
|
changeCounter, proposedName);
|
||||||
if (error != B_OK)
|
if (error != B_OK)
|
||||||
return error;
|
return error;
|
||||||
@@ -1318,8 +1344,9 @@ _kern_set_partition_type(partition_id partitionID, int32 changeCounter,
|
|||||||
if (!_type)
|
if (!_type)
|
||||||
return B_BAD_VALUE;
|
return B_BAD_VALUE;
|
||||||
char type[B_OS_NAME_LENGTH];
|
char type[B_OS_NAME_LENGTH];
|
||||||
if (user_strlcpy(type, _type, B_OS_NAME_LENGTH) >= B_OS_NAME_LENGTH)
|
status_t error = ddm_strlcpy(type, _type, B_OS_NAME_LENGTH);
|
||||||
return B_NAME_TOO_LONG;
|
if (error)
|
||||||
|
return error;
|
||||||
KDiskDeviceManager *manager = KDiskDeviceManager::Default();
|
KDiskDeviceManager *manager = KDiskDeviceManager::Default();
|
||||||
// get the partition
|
// get the partition
|
||||||
KPartition *partition = manager->WriteLockPartition(partitionID);
|
KPartition *partition = manager->WriteLockPartition(partitionID);
|
||||||
@@ -1329,8 +1356,8 @@ _kern_set_partition_type(partition_id partitionID, int32 changeCounter,
|
|||||||
PartitionRegistrar registrar2(partition->Device(), true);
|
PartitionRegistrar registrar2(partition->Device(), true);
|
||||||
DeviceWriteLocker locker(partition->Device(), true);
|
DeviceWriteLocker locker(partition->Device(), true);
|
||||||
// check type
|
// check type
|
||||||
status_t error = validate_set_partition_type(partition, changeCounter,
|
error = validate_set_partition_type(partition, changeCounter,
|
||||||
type);
|
type);
|
||||||
if (error != B_OK)
|
if (error != B_OK)
|
||||||
return error;
|
return error;
|
||||||
// set type
|
// set type
|
||||||
@@ -1437,9 +1464,11 @@ _kern_initialize_partition(partition_id partitionID, int32 changeCounter,
|
|||||||
char diskSystemName[B_OS_NAME_LENGTH];
|
char diskSystemName[B_OS_NAME_LENGTH];
|
||||||
char name[B_OS_NAME_LENGTH];
|
char name[B_OS_NAME_LENGTH];
|
||||||
char *parameters = NULL;
|
char *parameters = NULL;
|
||||||
if (user_strlcpy(diskSystemName, _diskSystemName, B_OS_NAME_LENGTH) >= B_OS_NAME_LENGTH
|
status_t error = ddm_strlcpy(diskSystemName, _diskSystemName, B_OS_NAME_LENGTH);
|
||||||
|| user_strlcpy(name, _name, B_OS_NAME_LENGTH) >= B_OS_NAME_LENGTH)
|
if (!error)
|
||||||
return B_NAME_TOO_LONG;
|
error = ddm_strlcpy(name, _name, B_OS_NAME_LENGTH);
|
||||||
|
if (error)
|
||||||
|
return error;
|
||||||
if (_parameters) {
|
if (_parameters) {
|
||||||
parameters = static_cast<char*>(malloc(strlen(_parameters)+1));
|
parameters = static_cast<char*>(malloc(strlen(_parameters)+1));
|
||||||
if (parameters)
|
if (parameters)
|
||||||
@@ -1450,7 +1479,7 @@ _kern_initialize_partition(partition_id partitionID, int32 changeCounter,
|
|||||||
KDiskDeviceManager *manager = KDiskDeviceManager::Default();
|
KDiskDeviceManager *manager = KDiskDeviceManager::Default();
|
||||||
// get the partition
|
// get the partition
|
||||||
KPartition *partition = manager->WriteLockPartition(partitionID);
|
KPartition *partition = manager->WriteLockPartition(partitionID);
|
||||||
status_t error = partition ? B_OK : B_ENTRY_NOT_FOUND;
|
error = partition ? B_OK : B_ENTRY_NOT_FOUND;
|
||||||
if (!error) {
|
if (!error) {
|
||||||
PartitionRegistrar registrar1(partition, true);
|
PartitionRegistrar registrar1(partition, true);
|
||||||
PartitionRegistrar registrar2(partition->Device(), true);
|
PartitionRegistrar registrar2(partition->Device(), true);
|
||||||
@@ -1518,8 +1547,9 @@ _kern_create_child_partition(partition_id partitionID, int32 changeCounter,
|
|||||||
return B_BAD_VALUE;
|
return B_BAD_VALUE;
|
||||||
char type[B_OS_NAME_LENGTH];
|
char type[B_OS_NAME_LENGTH];
|
||||||
char *parameters = NULL;
|
char *parameters = NULL;
|
||||||
if (user_strlcpy(type, _type, B_OS_NAME_LENGTH) >= B_OS_NAME_LENGTH)
|
status_t error = ddm_strlcpy(type, _type, B_OS_NAME_LENGTH);
|
||||||
return B_NAME_TOO_LONG;
|
if (error)
|
||||||
|
return error;
|
||||||
if (_parameters) {
|
if (_parameters) {
|
||||||
parameters = static_cast<char*>(malloc(strlen(_parameters)+1));
|
parameters = static_cast<char*>(malloc(strlen(_parameters)+1));
|
||||||
if (parameters)
|
if (parameters)
|
||||||
@@ -1530,7 +1560,7 @@ _kern_create_child_partition(partition_id partitionID, int32 changeCounter,
|
|||||||
KDiskDeviceManager *manager = KDiskDeviceManager::Default();
|
KDiskDeviceManager *manager = KDiskDeviceManager::Default();
|
||||||
// get the partition
|
// get the partition
|
||||||
KPartition *partition = manager->WriteLockPartition(partitionID);
|
KPartition *partition = manager->WriteLockPartition(partitionID);
|
||||||
status_t error = partition ? B_OK : B_ENTRY_NOT_FOUND;
|
error = partition ? B_OK : B_ENTRY_NOT_FOUND;
|
||||||
if (!error) {
|
if (!error) {
|
||||||
PartitionRegistrar registrar1(partition, true);
|
PartitionRegistrar registrar1(partition, true);
|
||||||
PartitionRegistrar registrar2(partition->Device(), true);
|
PartitionRegistrar registrar2(partition->Device(), true);
|
||||||
|
|||||||
Reference in New Issue
Block a user