From d64ba587599d8086d82b01a8827d5839f3e3a902 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Tue, 9 Feb 2021 17:41:59 -0500 Subject: nfp: Correct uninitialized size being used within GetTagInfo() We were previously the name of the object being initialized within its own initializer, which results in uninitialized data being read. --- src/core/hle/service/nfp/nfp.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/core/hle/service/nfp/nfp.cpp b/src/core/hle/service/nfp/nfp.cpp index 5d6d25696..2d1d4d67f 100644 --- a/src/core/hle/service/nfp/nfp.cpp +++ b/src/core/hle/service/nfp/nfp.cpp @@ -215,7 +215,7 @@ private: const auto& amiibo = nfp_interface.GetAmiiboBuffer(); const TagInfo tag_info{ .uuid = amiibo.uuid, - .uuid_length = static_cast(tag_info.uuid.size()), + .uuid_length = static_cast(amiibo.uuid.size()), .padding_1 = {}, .protocol = 1, // TODO(ogniK): Figure out actual values .tag_type = 2, -- cgit v1.2.3 From 1dab8acf5f7a5dae96afa45bba497dfd5cd2f008 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Tue, 9 Feb 2021 17:44:11 -0500 Subject: am/controller: Remove [[fallthrough]] from unreachable path Prevents warnings on clang 12. This path is reachable on other variations of the build that disable the unreachable macro. --- src/core/hle/service/am/applets/controller.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/core/hle/service/am/applets/controller.cpp b/src/core/hle/service/am/applets/controller.cpp index d7d3ee99a..c2bfe698f 100644 --- a/src/core/hle/service/am/applets/controller.cpp +++ b/src/core/hle/service/am/applets/controller.cpp @@ -211,7 +211,8 @@ void Controller::Execute() { case ControllerSupportMode::ShowControllerFirmwareUpdate: UNIMPLEMENTED_MSG("ControllerSupportMode={} is not implemented", controller_private_arg.mode); - [[fallthrough]]; + ConfigurationComplete(); + break; default: { ConfigurationComplete(); break; -- cgit v1.2.3 From 0cd40fb5239bc3df092e2e3d21e8a3acc661b55a Mon Sep 17 00:00:00 2001 From: Lioncash Date: Tue, 9 Feb 2021 17:50:26 -0500 Subject: bsd: Remove usage of optional emplace() with no arguments Clang 12 currently falls over in the face of this. --- src/core/hle/service/sockets/bsd.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/core/hle/service/sockets/bsd.cpp b/src/core/hle/service/sockets/bsd.cpp index 0b306b87a..78e9cd708 100644 --- a/src/core/hle/service/sockets/bsd.cpp +++ b/src/core/hle/service/sockets/bsd.cpp @@ -453,7 +453,8 @@ std::pair BSD::SocketImpl(Domain domain, Type type, Protocol protoco return {-1, Errno::MFILE}; } - FileDescriptor& descriptor = file_descriptors[fd].emplace(); + file_descriptors[fd] = FileDescriptor{}; + FileDescriptor& descriptor = *file_descriptors[fd]; // ENONMEM might be thrown here LOG_INFO(Service, "New socket fd={}", fd); @@ -548,7 +549,8 @@ std::pair BSD::AcceptImpl(s32 fd, std::vector& write_buffer) { return {-1, Translate(bsd_errno)}; } - FileDescriptor& new_descriptor = file_descriptors[new_fd].emplace(); + file_descriptors[new_fd] = FileDescriptor{}; + FileDescriptor& new_descriptor = *file_descriptors[new_fd]; new_descriptor.socket = std::move(result.socket); new_descriptor.is_connection_based = descriptor.is_connection_based; -- cgit v1.2.3