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 e5e1ae02b2..d5b282bfde 100644 --- a/headers/private/kernel/disk_device_manager/ddm_userland_interface.h +++ b/headers/private/kernel/disk_device_manager/ddm_userland_interface.h @@ -140,12 +140,14 @@ status_t _kern_validate_initialize_partition(partition_id partitionID, int32 changeCounter, const char *diskSystemName, char *name, - const char *parameters); + const char *parameters, + size_t parametersSize); status_t _kern_validate_create_child_partition(partition_id partitionID, int32 changeCounter, off_t *offset, off_t *size, const char *type, - const char *parameters); + const char *parameters, + size_t parametersSize); status_t _kern_get_partitionable_spaces(partition_id partitionID, int32 changeCounter, partitionable_space_data *buffer, @@ -182,20 +184,24 @@ status_t _kern_set_partition_type(partition_id partitionID, int32 changeCounter, const char *type); status_t _kern_set_partition_parameters(partition_id partitionID, int32 changeCounter, - const char *parameters); + const char *parameters, + size_t parametersSize); status_t _kern_set_partition_content_parameters(partition_id partitionID, int32 changeCounter, - const char *parameters); + const char *parameters, + size_t parametersSize); status_t _kern_initialize_partition(partition_id partitionID, int32 changeCounter, const char *diskSystemName, - const char *name, const char *parameters); + const char *name, const char *parameters, + size_t parametersSize); status_t _kern_uninitialize_partition(partition_id partitionID, int32 changeCounter); status_t _kern_create_child_partition(partition_id partitionID, int32 changeCounter, off_t offset, off_t size, const char *type, const char *parameters, + size_t parametersSize, partition_id *childID); status_t _kern_delete_partition(partition_id partitionID, int32 changeCounter); diff --git a/src/kits/storage/Partition.cpp b/src/kits/storage/Partition.cpp index 3e1fdb38d7..212198c9e7 100644 --- a/src/kits/storage/Partition.cpp +++ b/src/kits/storage/Partition.cpp @@ -742,7 +742,10 @@ BPartition::SetParameters(const char *parameters) return B_BAD_VALUE; status_t error = _kern_set_partition_parameters(_ShadowID(), _ChangeCounter(), - parameters); + parameters, + (parameters + ? strlen(parameters)+1 + : 0)); if (error == B_OK) error = Device()->Update(); return error; @@ -773,7 +776,10 @@ BPartition::SetContentParameters(const char *parameters) return B_BAD_VALUE; status_t error = _kern_set_partition_content_parameters(_ShadowID(), _ChangeCounter(), - parameters); + parameters, + (parameters + ? strlen(parameters)+1 + : 0)); if (error == B_OK) error = Device()->Update(); return error; @@ -806,7 +812,8 @@ BPartition::ValidateInitialize(const char *diskSystem, char *name, if (!fPartitionData || !_IsShadow() || !diskSystem || !name) return B_BAD_VALUE; return _kern_validate_initialize_partition(_ShadowID(), _ChangeCounter(), - diskSystem, name, parameters); + diskSystem, name, parameters, + (parameters ? strlen(parameters)+1 : 0)); } // Initialize @@ -817,7 +824,8 @@ BPartition::Initialize(const char *diskSystem, const char *name, if (!fPartitionData || !_IsShadow() || !diskSystem || !name) return B_BAD_VALUE; status_t error = _kern_initialize_partition(_ShadowID(), _ChangeCounter(), - diskSystem, name, parameters); + diskSystem, name, parameters, + (parameters ? strlen(parameters)+1 : 0)); if (error == B_OK) error = Device()->Update(); return error; @@ -863,7 +871,8 @@ BPartition::ValidateCreateChild(off_t *offset, off_t *size, const char *type, return B_BAD_VALUE; return _kern_validate_create_child_partition(_ShadowID(), _ChangeCounter(), offset, size, type, - parameters); + parameters, + (parameters ? strlen(parameters)+1 : 0)); } // CreateChild @@ -877,7 +886,7 @@ BPartition::CreateChild(off_t offset, off_t size, const char *type, partition_id childID = -1; status_t error = _kern_create_child_partition(_ShadowID(), _ChangeCounter(), offset, size, type, parameters, - &childID); + (parameters ? strlen(parameters)+1 : 0), &childID); // update the device if (error == B_OK) error = Device()->Update();