hackedteam/vector-dropper

View on GitHub
RCSDropper/ResourceDirectoryEntry.cpp

Summary

Maintainability
Test Coverage
#include <new>
#include "ResourceDirectoryEntry.h"

ResourceDirectoryEntry::ResourceDirectoryEntry( WCHAR* name, ResourceDirectory* rdSubDir )
: writtenAt(0)
{
    if (IS_INTRESOURCE(name)) {
        _hasName = false;
        _name = 0;
        _id = (WORD)(DWORD) name;
    } else {
        _hasName = true;
        _name = new(std::nothrow) WCHAR[wcslen(name) + 1];
        wcscpy(_name, name);
    }
    _isDataDirectory = true;
    _rdSubDir = rdSubDir;
}

ResourceDirectoryEntry::ResourceDirectoryEntry( WCHAR* name, ResourceDataEntry* rdeData )
: writtenAt(0)
{
    if (IS_INTRESOURCE(name)) {
        _hasName = false;
        _name = 0;
        _id = (WORD)(DWORD) name;
    } else {
        _hasName = true;
        _name = new(std::nothrow) WCHAR[wcslen(name) + 1];
        wcscpy(_name, name);
    }
    _isDataDirectory = false;
    _rdeData = rdeData;
}

WCHAR* ResourceDirectoryEntry::GetName()
{
    if (!_hasName) 
        return 0; 
    
    WCHAR * name = new(std::nothrow) WCHAR[wcslen(_name) + 1];
    wcscpy(name, _name);
    return name;
}