ncm: hot take, uninitialized data bad

This commit is contained in:
Michael Scire 2022-03-22 14:02:14 -07:00
parent b428e77c16
commit dc7184c01f
18 changed files with 36 additions and 36 deletions

View file

@ -25,7 +25,7 @@ namespace ams::lr {
private:
sf::SharedPointer<IAddOnContentLocationResolver> m_interface;
public:
AddOnContentLocationResolver() { /* ... */ }
AddOnContentLocationResolver() : m_interface(nullptr) { /* ... */ }
explicit AddOnContentLocationResolver(sf::SharedPointer<IAddOnContentLocationResolver> intf) : m_interface(intf) { /* ... */ }
AddOnContentLocationResolver(AddOnContentLocationResolver &&rhs) {

View file

@ -25,7 +25,7 @@ namespace ams::lr {
private:
sf::SharedPointer<ILocationResolver> m_interface;
public:
LocationResolver() { /* ... */ }
LocationResolver() : m_interface(nullptr) { /* ... */ }
explicit LocationResolver(sf::SharedPointer<ILocationResolver> intf) : m_interface(intf) { /* ... */ }
LocationResolver(LocationResolver &&rhs) {

View file

@ -25,7 +25,7 @@ namespace ams::lr {
private:
sf::SharedPointer<IRegisteredLocationResolver> m_interface;
public:
RegisteredLocationResolver() { /* ... */ }
RegisteredLocationResolver() : m_interface(nullptr) { /* ... */ }
explicit RegisteredLocationResolver(sf::SharedPointer<IRegisteredLocationResolver> intf) : m_interface(intf) { /* ... */ }
RegisteredLocationResolver(RegisteredLocationResolver &&rhs) {

View file

@ -84,7 +84,7 @@ namespace ams::ncm {
fs::ContentStorageId content_storage_id;
sf::SharedPointer<IContentStorage> content_storage;
ContentStorageRoot() { /* ... */ }
ContentStorageRoot() : mount_name(), path(), storage_id(), content_storage_id(), content_storage() { /* ... */ }
};
struct ContentMetaDatabaseRoot {
@ -100,7 +100,7 @@ namespace ams::ncm {
ContentMetaMemoryResource *memory_resource;
u32 max_content_metas;
ContentMetaDatabaseRoot() { /* ... */ }
ContentMetaDatabaseRoot() : mount_name(), path(), storage_id(), info(), content_meta_database(), kvs(util::nullopt), memory_resource(), max_content_metas() { /* ... */ }
};
private:
os::SdkRecursiveMutex m_mutex;

View file

@ -28,7 +28,7 @@ namespace ams::ncm {
private:
sf::SharedPointer<IContentMetaDatabase> m_interface;
public:
ContentMetaDatabase() { /* ... */ }
ContentMetaDatabase() : m_interface(nullptr) { /* ... */ }
explicit ContentMetaDatabase(sf::SharedPointer<IContentMetaDatabase> intf) : m_interface(intf) { /* ... */ }
ContentMetaDatabase(ContentMetaDatabase &&rhs) {

View file

@ -23,7 +23,7 @@ namespace ams::ncm {
private:
sf::SharedPointer<IContentStorage> m_interface;
public:
ContentStorage() { /* ... */ }
ContentStorage() : m_interface(nullptr) { /* ... */ }
explicit ContentStorage(sf::SharedPointer<IContentStorage> intf) : m_interface(intf) { /* ... */ }
ContentStorage(ContentStorage &&rhs) {

View file

@ -82,18 +82,18 @@ namespace ams::ncm {
NON_COPYABLE(InstallTaskBase);
NON_MOVEABLE(InstallTaskBase);
private:
crypto::Sha256Generator m_sha256_generator;
StorageId m_install_storage;
InstallTaskDataBase *m_data;
InstallProgress m_progress;
os::SdkMutex m_progress_mutex;
u32 m_config;
os::SdkMutex m_cancel_mutex;
bool m_cancel_requested;
InstallThroughput m_throughput;
TimeSpan m_throughput_start_time;
os::SdkMutex m_throughput_mutex;
FirmwareVariationId m_firmware_variation_id;
crypto::Sha256Generator m_sha256_generator{};
StorageId m_install_storage{};
InstallTaskDataBase *m_data{};
InstallProgress m_progress{};
os::SdkMutex m_progress_mutex{};
u32 m_config{};
os::SdkMutex m_cancel_mutex{};
bool m_cancel_requested{};
InstallThroughput m_throughput{};
TimeSpan m_throughput_start_time{};
os::SdkMutex m_throughput_mutex{};
FirmwareVariationId m_firmware_variation_id{};
private:
ALWAYS_INLINE Result SetLastResultOnFailure(Result result) {
if (R_FAILED(result)) {

View file

@ -64,7 +64,7 @@ namespace ams::ncm {
Result m_last_result;
SystemUpdateTaskApplyInfo m_system_update_task_apply_info;
public:
MemoryInstallTaskData() : m_state(InstallProgressState::NotPrepared), m_last_result(ResultSuccess()) { /* ... */ };
MemoryInstallTaskData() : m_data_list(), m_state(InstallProgressState::NotPrepared), m_last_result(ResultSuccess()), m_system_update_task_apply_info() { /* ... */ };
~MemoryInstallTaskData() {
this->Cleanup();
}
@ -104,8 +104,8 @@ namespace ams::ncm {
static_assert(sizeof(EntryInfo) == 0x10);
private:
Header m_header;
char m_path[64];
Header m_header{};
char m_path[64]{};
private:
static constexpr Header MakeInitialHeader(s32 max_entries) {
return {

View file

@ -20,7 +20,7 @@ namespace ams::ncm {
class PackageInstallTask : public PackageInstallTaskBase {
private:
MemoryInstallTaskData m_data;
MemoryInstallTaskData m_data{};
public:
Result Initialize(const char *package_root, StorageId storage_id, void *buffer, size_t buffer_size, bool ignore_ticket);
protected:

View file

@ -24,8 +24,8 @@ namespace ams::ncm {
using PackagePath = kvdb::BoundedString<256>;
private:
PackagePath m_package_root;
void *m_buffer;
size_t m_buffer_size;
void *m_buffer{};
size_t m_buffer_size{};
public:
PackageInstallTaskBase() : m_package_root() { /* ... */ }

View file

@ -22,10 +22,10 @@ namespace ams::ncm {
private:
using PackagePath = kvdb::BoundedString<0x100>;
private:
PackagePath m_context_path;
FileInstallTaskData m_data;
ContentMetaDatabase m_package_db;
bool m_gamecard_content_meta_database_active;
PackagePath m_context_path{};
FileInstallTaskData m_data{};
ContentMetaDatabase m_package_db{};
bool m_gamecard_content_meta_database_active{};
public:
~PackageSystemUpdateTask();

View file

@ -37,7 +37,7 @@ namespace ams::ncm {
u64 m_counter;
os::SdkMutex m_mutex;
public:
RightsIdCache() : m_mutex() {
RightsIdCache() : m_entries(), m_counter(2), m_mutex() {
this->Invalidate();
}

View file

@ -27,7 +27,7 @@ namespace ams::lr {
ncm::ContentMetaDatabase m_content_meta_database;
ncm::ContentStorage m_content_storage;
public:
ContentLocationResolverImpl(ncm::StorageId storage_id) : m_storage_id(storage_id) { /* ... */ }
ContentLocationResolverImpl(ncm::StorageId storage_id) : m_storage_id(storage_id), m_content_meta_database(), m_content_storage() { /* ... */ }
~ContentLocationResolverImpl();
private:

View file

@ -45,7 +45,7 @@ namespace ams::lr {
void ClearRedirections(u32 flags = RedirectionFlags_None);
Result RefreshImpl(const ncm::ProgramId *excluding_ids, size_t num_ids);
public:
RegisteredLocationResolverImpl() : m_registered_program_locations(GetMaxRegisteredLocations()), m_registered_html_docs_locations(GetMaxRegisteredLocations()) { /* ... */ }
RegisteredLocationResolverImpl() : m_program_redirector(), m_registered_program_locations(GetMaxRegisteredLocations()), m_html_docs_redirector(), m_registered_html_docs_locations(GetMaxRegisteredLocations()) { /* ... */ }
~RegisteredLocationResolverImpl();
public:
/* Actual commands. */

View file

@ -28,7 +28,7 @@ namespace ams::ncm {
char m_mount_name[fs::MountNameLengthMax + 1];
bool m_disabled;
protected:
ContentMetaDatabaseImplBase(ContentMetaKeyValueStore *kvs) : m_kvs(kvs), m_disabled(false) { /* ... */ }
ContentMetaDatabaseImplBase(ContentMetaKeyValueStore *kvs) : m_kvs(kvs), m_mount_name(), m_disabled(false) { /* ... */ }
ContentMetaDatabaseImplBase(ContentMetaKeyValueStore *kvs, const char *mount_name) : ContentMetaDatabaseImplBase(kvs) {
std::strcpy(m_mount_name, mount_name);

View file

@ -26,7 +26,7 @@ namespace ams::ncm {
MakeContentPathFunction m_make_content_path_func;
bool m_disabled;
protected:
ContentStorageImplBase() : m_make_content_path_func(), m_disabled(false) { /* ... */ }
ContentStorageImplBase() : m_root_path(), m_make_content_path_func(), m_disabled(false) { /* ... */ }
protected:
/* Helpers. */
Result EnsureEnabled() const {

View file

@ -42,7 +42,7 @@ namespace ams::ncm {
CacheEntry *FindInCache(PlaceHolderId placeholder_id);
CacheEntry *GetFreeEntry();;
public:
PlaceHolderAccessor() : m_cur_counter(0), m_cache_mutex(), m_delay_flush(false) {
PlaceHolderAccessor() : m_root_path(nullptr), m_cur_counter(0), m_cache_mutex(), m_make_placeholder_path_func(nullptr), m_delay_flush(false) {
for (size_t i = 0; i < MaxCacheEntries; i++) {
m_caches[i].id = InvalidPlaceHolderId;
}

View file

@ -55,7 +55,7 @@ namespace ams::ncm {
}
};
SubmissionPackageInstallTask::SubmissionPackageInstallTask() { /* ... */ }
SubmissionPackageInstallTask::SubmissionPackageInstallTask() : m_impl(nullptr) { /* ... */ }
SubmissionPackageInstallTask::~SubmissionPackageInstallTask() { /* ... */ }
Result SubmissionPackageInstallTask::Initialize(fs::FileHandle file, StorageId storage_id, void *buffer, size_t buffer_size, bool ignore_ticket) {