summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar german772022-09-29 01:03:47 -0500
committerGravatar german772022-10-02 12:34:24 -0500
commit1485daff06b7e2aeb7077a4bdb1574956a4c3b82 (patch)
treed3f23b94d9b139ef94d9a103c869c92acad31afa /src
parentservice: nfp: Implement mount target and open application area errors, minor ... (diff)
downloadyuzu-1485daff06b7e2aeb7077a4bdb1574956a4c3b82.tar.gz
yuzu-1485daff06b7e2aeb7077a4bdb1574956a4c3b82.tar.xz
yuzu-1485daff06b7e2aeb7077a4bdb1574956a4c3b82.zip
service: mii: Copy only valid name bytes
Diffstat (limited to '')
-rw-r--r--src/core/hle/service/mii/mii_manager.cpp21
1 files changed, 18 insertions, 3 deletions
diff --git a/src/core/hle/service/mii/mii_manager.cpp b/src/core/hle/service/mii/mii_manager.cpp
index 4bc8703e1..3a2fe938f 100644
--- a/src/core/hle/service/mii/mii_manager.cpp
+++ b/src/core/hle/service/mii/mii_manager.cpp
@@ -442,8 +442,15 @@ CharInfo MiiManager::ConvertV3ToCharInfo(const Ver3StoreData& mii_v3) const {
442 mii.height = mii_v3.height; 442 mii.height = mii_v3.height;
443 mii.build = mii_v3.build; 443 mii.build = mii_v3.build;
444 444
445 memset(mii.name.data(), 0, mii.name.size()); 445 // Copy name until string terminator
446 memcpy(mii.name.data(), mii_v3.mii_name.data(), mii_v3.mii_name.size()); 446 mii.name = {};
447 for (std::size_t index = 0; index < mii.name.size() - 1; index++) {
448 mii.name[index] = mii_v3.mii_name[index];
449 if (mii.name[index] == 0) {
450 break;
451 }
452 }
453
447 mii.font_region = mii_v3.region_information.character_set; 454 mii.font_region = mii_v3.region_information.character_set;
448 455
449 mii.faceline_type = mii_v3.appearance_bits1.face_shape; 456 mii.faceline_type = mii_v3.appearance_bits1.face_shape;
@@ -515,7 +522,15 @@ Ver3StoreData MiiManager::ConvertCharInfoToV3(const CharInfo& mii) const {
515 mii_v3.height = mii.height; 522 mii_v3.height = mii.height;
516 mii_v3.build = mii.build; 523 mii_v3.build = mii.build;
517 524
518 memcpy(mii_v3.mii_name.data(), mii.name.data(), mii.name.size()); 525 // Copy name until string terminator
526 mii_v3.mii_name = {};
527 for (std::size_t index = 0; index < mii.name.size() - 1; index++) {
528 mii_v3.mii_name[index] = mii.name[index];
529 if (mii_v3.mii_name[index] == 0) {
530 break;
531 }
532 }
533
519 mii_v3.region_information.character_set.Assign(mii.font_region); 534 mii_v3.region_information.character_set.Assign(mii.font_region);
520 535
521 mii_v3.appearance_bits1.face_shape.Assign(mii.faceline_type); 536 mii_v3.appearance_bits1.face_shape.Assign(mii.faceline_type);