Resolve code analysis reported warnings

This commit is contained in:
Simon Rozman 2018-12-18 09:05:00 +01:00
parent 51a82c242f
commit aa7cd261f2
12 changed files with 8580 additions and 8556 deletions

View File

@ -53,6 +53,9 @@ namespace winstd
/// ///
inline base64_enc() : num(0) inline base64_enc() : num(0)
{ {
buf[0] = 0;
buf[1] = 0;
buf[2] = 0;
} }
@ -181,6 +184,10 @@ namespace winstd
/// ///
inline base64_dec() : num(0) inline base64_dec() : num(0)
{ {
buf[0] = 0;
buf[1] = 0;
buf[2] = 0;
buf[3] = 0;
} }

View File

@ -29,11 +29,11 @@
namespace winstd namespace winstd
{ {
class WINSTD_API com_runtime_error;
template <class T> class com_obj; template <class T> class com_obj;
class WINSTD_API bstr; class WINSTD_API bstr;
class WINSTD_API variant; class WINSTD_API variant;
class WINSTD_API com_initializer; class WINSTD_API com_initializer;
class WINSTD_API com_runtime_error;
} }
#pragma once #pragma once
@ -41,6 +41,54 @@ namespace winstd
namespace winstd namespace winstd
{ {
///
/// \defgroup WinStdExceptions Exceptions
/// Additional exceptions
///
/// @{
///
/// COM runtime error
///
/// \note Must be defined as derived class from num_runtime_error<> to allow correct type info for dynamic typecasting and prevent folding with other derivates of num_runtime_error<>.
///
class WINSTD_API com_runtime_error : public num_runtime_error<HRESULT>
{
public:
///
/// Constructs an exception
///
/// \param[in] num COM error code
/// \param[in] msg Error message
///
inline com_runtime_error(_In_ error_type num, _In_ const std::string& msg) : num_runtime_error<HRESULT>(num, msg.c_str())
{
}
///
/// Constructs an exception
///
/// \param[in] num COM error code
/// \param[in] msg Error message
///
inline com_runtime_error(_In_ error_type num, _In_z_ const char *msg) : num_runtime_error<HRESULT>(num, msg)
{
}
///
/// Copies an exception
///
/// \param[in] other Exception to copy from
///
inline com_runtime_error(const com_runtime_error &other) : num_runtime_error<HRESULT>(other)
{
}
};
/// @}
/// \addtogroup WinStdCOM /// \addtogroup WinStdCOM
/// @{ /// @{
@ -265,7 +313,9 @@ namespace winstd
inline variant(_In_ const VARIANT& varSrc) inline variant(_In_ const VARIANT& varSrc)
{ {
vt = VT_EMPTY; vt = VT_EMPTY;
VariantCopy(this, &varSrc); HRESULT hr = VariantCopy(this, &varSrc);
if (FAILED(hr))
throw winstd::com_runtime_error(hr, "VariantCopy failed.");
} }
/// ///
@ -477,8 +527,11 @@ namespace winstd
/// ///
inline variant& operator=(_In_ const VARIANT& varSrc) inline variant& operator=(_In_ const VARIANT& varSrc)
{ {
if (this != &varSrc) if (this != &varSrc) {
VariantCopy(this, &varSrc); HRESULT hr = VariantCopy(this, &varSrc);
if (FAILED(hr))
throw winstd::com_runtime_error(hr, "VariantCopy failed.");
}
return *this; return *this;
} }
@ -1040,52 +1093,4 @@ namespace winstd
}; };
/// @} /// @}
///
/// \defgroup WinStdExceptions Exceptions
/// Additional exceptions
///
/// @{
///
/// COM runtime error
///
/// \note Must be defined as derived class from num_runtime_error<> to allow correct type info for dynamic typecasting and prevent folding with other derivates of num_runtime_error<>.
///
class WINSTD_API com_runtime_error : public num_runtime_error<HRESULT>
{
public:
///
/// Constructs an exception
///
/// \param[in] num COM error code
/// \param[in] msg Error message
///
inline com_runtime_error(_In_ error_type num, _In_ const std::string& msg) : num_runtime_error<HRESULT>(num, msg.c_str())
{
}
///
/// Constructs an exception
///
/// \param[in] num COM error code
/// \param[in] msg Error message
///
inline com_runtime_error(_In_ error_type num, _In_z_ const char *msg) : num_runtime_error<HRESULT>(num, msg)
{
}
///
/// Copies an exception
///
/// \param[in] other Exception to copy from
///
inline com_runtime_error(const com_runtime_error &other) : num_runtime_error<HRESULT>(other)
{
}
};
/// @}
} }

View File

@ -119,9 +119,9 @@ private: \
public: \ public: \
inline C ( ) { } \ inline C ( ) { } \
inline C (_In_ handle_type h) : handle<handle_type>( h ) { } \ inline C (_In_ handle_type h) : handle<handle_type>( h ) { } \
inline C (_Inout_ C &&h) : handle<handle_type>(std::move(h)) { } \ inline C (_Inout_ C &&h) noexcept : handle<handle_type>(std::move(h)) { } \
inline C& operator=(_In_ handle_type h) { handle<handle_type>::operator=( h ); return *this; } \ inline C& operator=(_In_ handle_type h) { handle<handle_type>::operator=( h ); return *this; } \
inline C& operator=(_Inout_ C &&h) { handle<handle_type>::operator=(std::move(h)); return *this; } \ inline C& operator=(_Inout_ C &&h) noexcept { handle<handle_type>::operator=(std::move(h)); return *this; } \
WINSTD_NONCOPYABLE(C) WINSTD_NONCOPYABLE(C)
/// ///
@ -132,10 +132,10 @@ public: \
inline C ( ) { } \ inline C ( ) { } \
inline C (_In_ handle_type h) : dplhandle<handle_type>( h ) { } \ inline C (_In_ handle_type h) : dplhandle<handle_type>( h ) { } \
inline C (_In_ const C &h) : dplhandle<handle_type>(duplicate_internal(h.m_h)) { } \ inline C (_In_ const C &h) : dplhandle<handle_type>(duplicate_internal(h.m_h)) { } \
inline C (_Inout_ C &&h) : dplhandle<handle_type>(std::move (h )) { } \ inline C (_Inout_ C &&h) noexcept : dplhandle<handle_type>(std::move (h )) { } \
inline C& operator=(_In_ handle_type h) { dplhandle<handle_type>::operator=( h ); return *this; } \ inline C& operator=(_In_ handle_type h) { dplhandle<handle_type>::operator=( h ); return *this; } \
inline C& operator=(_In_ const C &h) { dplhandle<handle_type>::operator=( h ); return *this; } \ inline C& operator=(_In_ const C &h) { dplhandle<handle_type>::operator=( h ); return *this; } \
inline C& operator=(_Inout_ C &&h) { dplhandle<handle_type>::operator=(std::move(h)); return *this; } \ inline C& operator=(_Inout_ C &&h) noexcept { dplhandle<handle_type>::operator=(std::move(h)); return *this; } \
private: private:
/// @} /// @}
@ -640,7 +640,7 @@ namespace winstd
/// ///
/// \param[inout] h A rvalue reference of another object /// \param[inout] h A rvalue reference of another object
/// ///
inline handle(_Inout_ handle<handle_type> &&h) inline handle(_Inout_ handle<handle_type> &&h) noexcept
{ {
// Transfer handle. // Transfer handle.
m_h = h.m_h; m_h = h.m_h;
@ -669,7 +669,7 @@ namespace winstd
/// ///
/// \param[inout] h A rvalue reference of another object /// \param[inout] h A rvalue reference of another object
/// ///
inline handle<handle_type>& operator=(_Inout_ handle<handle_type> &&h) inline handle<handle_type>& operator=(_Inout_ handle<handle_type> &&h) noexcept
{ {
if (this != std::addressof(h)) { if (this != std::addressof(h)) {
// Transfer handle. // Transfer handle.
@ -900,7 +900,7 @@ namespace winstd
/// ///
/// \param[inout] h A rvalue reference of another object /// \param[inout] h A rvalue reference of another object
/// ///
inline dplhandle<handle_type>(_Inout_ dplhandle<handle_type> &&h) : handle<handle_type>(std::move(h)) inline dplhandle<handle_type>(_Inout_ dplhandle<handle_type> &&h) noexcept : handle<handle_type>(std::move(h))
{ {
} }
@ -947,7 +947,7 @@ namespace winstd
/// ///
/// \param[inout] h A rvalue reference of another object /// \param[inout] h A rvalue reference of another object
/// ///
inline dplhandle<handle_type>& operator=(_Inout_ dplhandle<handle_type> &&h) inline dplhandle<handle_type>& operator=(_Inout_ dplhandle<handle_type> &&h) noexcept
{ {
handle<handle_type>::operator=(std::move(h)); handle<handle_type>::operator=(std::move(h));
return *this; return *this;
@ -1739,7 +1739,7 @@ namespace winstd
/// \param[in] guid GUID to convert /// \param[in] guid GUID to convert
/// \param[in] format A `printf()` syntax template to convert GUID to string (i.e. `"{%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}"`) /// \param[in] format A `printf()` syntax template to convert GUID to string (i.e. `"{%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}"`)
/// ///
inline basic_string_guid(_In_ const GUID &guid, _In_opt_z_ _Printf_format_string_ const _Elem *format) inline basic_string_guid(_In_ const GUID &guid, _In_z_ _Printf_format_string_ const _Elem *format)
{ {
sprintf<_Elem, _Traits, _Ax>(*this, format, sprintf<_Elem, _Traits, _Ax>(*this, format,
guid.Data1, guid.Data1,

View File

@ -44,7 +44,7 @@ namespace winstd
/// ///
/// \sa [CredEnumerate function](https://msdn.microsoft.com/en-us/library/windows/desktop/aa374794.aspx) /// \sa [CredEnumerate function](https://msdn.microsoft.com/en-us/library/windows/desktop/aa374794.aspx)
/// ///
inline BOOL CredEnumerate(_In_ LPCTSTR Filter, _In_ DWORD Flags, _Out_ DWORD *Count, _Out_ std::unique_ptr<PCREDENTIAL[], winstd::CredFree_delete<PCREDENTIAL[]> > &cCredentials); inline BOOL CredEnumerate(_In_ LPCTSTR Filter, _Reserved_ DWORD Flags, _Out_ DWORD *Count, _Out_ std::unique_ptr<PCREDENTIAL[], winstd::CredFree_delete<PCREDENTIAL[]> > &cCredentials);
/// @copydoc CredProtectW() /// @copydoc CredProtectW()
template<class _Elem, class _Traits, class _Ax> inline BOOL CredProtectA(_In_ BOOL fAsSelf, _In_ LPCSTR pszCredentials, _In_ DWORD cchCredentials, _Out_ std::basic_string<_Elem, _Traits, _Ax> &sProtectedCredentials, _Out_ CRED_PROTECTION_TYPE *ProtectionType); template<class _Elem, class _Traits, class _Ax> inline BOOL CredProtectA(_In_ BOOL fAsSelf, _In_ LPCSTR pszCredentials, _In_ DWORD cchCredentials, _Out_ std::basic_string<_Elem, _Traits, _Ax> &sProtectedCredentials, _Out_ CRED_PROTECTION_TYPE *ProtectionType);
@ -143,15 +143,12 @@ namespace winstd
} }
inline BOOL CredEnumerate(_In_ LPCTSTR Filter, _In_ DWORD Flags, _Out_ DWORD *Count, _Out_ std::unique_ptr<PCREDENTIAL[], winstd::CredFree_delete<PCREDENTIAL[]> > &cCredentials) inline BOOL CredEnumerate(_In_ LPCTSTR Filter, _Reserved_ DWORD Flags, _Out_ DWORD *Count, _Out_ std::unique_ptr<PCREDENTIAL[], winstd::CredFree_delete<PCREDENTIAL[]> > &cCredentials)
{ {
PCREDENTIAL *pCredentials; PCREDENTIAL *pCredentials = NULL;
if (CredEnumerate(Filter, Flags, Count, &pCredentials)) { BOOL bResult = CredEnumerate(Filter, Flags, Count, &pCredentials);
std::unique_ptr<PCREDENTIAL[], winstd::CredFree_delete<PCREDENTIAL[]> > cred(pCredentials); cCredentials.reset(pCredentials);
cCredentials.swap(cred); return bResult;
return TRUE;
} else
return FALSE;
} }

View File

@ -810,7 +810,7 @@ inline BOOL CryptGetKeyParam(_In_ HCRYPTKEY hKey, _In_ DWORD dwParam, _Out_ T &d
template<class _Ty, class _Ax> template<class _Ty, class _Ax>
inline BOOL CryptExportKey(_In_ HCRYPTKEY hKey, _In_ HCRYPTKEY hExpKey, _In_ DWORD dwBlobType, _In_ DWORD dwFlags, _Out_ std::vector<_Ty, _Ax> &aData) inline BOOL CryptExportKey(_In_ HCRYPTKEY hKey, _In_ HCRYPTKEY hExpKey, _In_ DWORD dwBlobType, _In_ DWORD dwFlags, _Out_ std::vector<_Ty, _Ax> &aData)
{ {
DWORD dwKeyBLOBSize; DWORD dwKeyBLOBSize = 0;
if (CryptExportKey(hKey, hExpKey, dwBlobType, dwFlags, NULL, &dwKeyBLOBSize)) { if (CryptExportKey(hKey, hExpKey, dwBlobType, dwFlags, NULL, &dwKeyBLOBSize)) {
aData.resize((dwKeyBLOBSize + sizeof(_Ty) - 1) / sizeof(_Ty)); aData.resize((dwKeyBLOBSize + sizeof(_Ty) - 1) / sizeof(_Ty));

View File

@ -265,7 +265,7 @@ namespace winstd
/// ///
/// Moves an existing EAP attribute. /// Moves an existing EAP attribute.
/// ///
inline eap_attr(_Inout_ eap_attr &&a) inline eap_attr(_Inout_ eap_attr &&a) noexcept
{ {
eaType = a.eaType; eaType = a.eaType;
dwLength = a.dwLength; dwLength = a.dwLength;
@ -308,7 +308,7 @@ namespace winstd
/// ///
/// Moves an existing EAP attribute. /// Moves an existing EAP attribute.
/// ///
inline eap_attr& operator=(_Inout_ eap_attr &&a) inline eap_attr& operator=(_Inout_ eap_attr &&a) noexcept
{ {
if (this != &a) { if (this != &a) {
eaType = a.eaType; eaType = a.eaType;
@ -481,7 +481,7 @@ namespace winstd
/// ///
/// \param[inout] other A rvalue reference of another object /// \param[inout] other A rvalue reference of another object
/// ///
inline eap_method_info_array(_Inout_ eap_method_info_array &&other) inline eap_method_info_array(_Inout_ eap_method_info_array &&other) noexcept
{ {
dwNumberOfMethods = other.dwNumberOfMethods; dwNumberOfMethods = other.dwNumberOfMethods;
pEapMethods = other.pEapMethods; pEapMethods = other.pEapMethods;
@ -499,7 +499,7 @@ namespace winstd
/// ///
/// \param[inout] other A rvalue reference of another object /// \param[inout] other A rvalue reference of another object
/// ///
inline eap_method_info_array& operator=(_Inout_ eap_method_info_array &&other) inline eap_method_info_array& operator=(_Inout_ eap_method_info_array &&other) noexcept
{ {
if (this != std::addressof(other)) { if (this != std::addressof(other)) {
if (pEapMethods) if (pEapMethods)

View File

@ -280,7 +280,7 @@ namespace winstd
/// ///
/// \param[in] other Event record to move /// \param[in] other Event record to move
/// ///
inline event_rec(_Inout_ event_rec&& other) : EVENT_RECORD(other) inline event_rec(_Inout_ event_rec&& other) noexcept : EVENT_RECORD(other)
{ {
memset((EVENT_RECORD*)&other, 0, sizeof(EVENT_RECORD)); memset((EVENT_RECORD*)&other, 0, sizeof(EVENT_RECORD));
} }
@ -331,7 +331,7 @@ namespace winstd
/// ///
/// \param[in] other Event record to move /// \param[in] other Event record to move
/// ///
inline event_rec& operator=(_Inout_ event_rec&& other) inline event_rec& operator=(_Inout_ event_rec&& other) noexcept
{ {
if (this != std::addressof(other)) { if (this != std::addressof(other)) {
(EVENT_RECORD&)*this = other; (EVENT_RECORD&)*this = other;
@ -473,7 +473,7 @@ namespace winstd
ULONG param_count; ULONG param_count;
// Preallocate array. // Preallocate array.
for (param_count = 1;; param_count++) { for (param_count = 1; param_count < MAX_EVENT_DATA_DESCRIPTORS; param_count++) {
const EVENT_DATA_DESCRIPTOR &p = va_arg(arg, const EVENT_DATA_DESCRIPTOR); const EVENT_DATA_DESCRIPTOR &p = va_arg(arg, const EVENT_DATA_DESCRIPTOR);
if (p.Ptr == winstd::event_data::blank.Ptr && if (p.Ptr == winstd::event_data::blank.Ptr &&
p.Size == winstd::event_data::blank.Size && p.Size == winstd::event_data::blank.Size &&
@ -493,7 +493,10 @@ namespace winstd
} }
va_end(arg); va_end(arg);
#pragma warning(push)
#pragma warning(disable: 28020)
return EventWrite(m_h, EventDescriptor, param_count, params.data()); return EventWrite(m_h, EventDescriptor, param_count, params.data());
#pragma warning(pop)
} }
@ -517,7 +520,7 @@ namespace winstd
ULONG param_count; ULONG param_count;
// Preallocate array. // Preallocate array.
for (param_count = 0;; param_count++) { for (param_count = 0; param_count < MAX_EVENT_DATA_DESCRIPTORS; param_count++) {
const EVENT_DATA_DESCRIPTOR &p = va_arg(arg, const EVENT_DATA_DESCRIPTOR); const EVENT_DATA_DESCRIPTOR &p = va_arg(arg, const EVENT_DATA_DESCRIPTOR);
if (p.Ptr == winstd::event_data::blank.Ptr && if (p.Ptr == winstd::event_data::blank.Ptr &&
p.Size == winstd::event_data::blank.Size && p.Size == winstd::event_data::blank.Size &&
@ -535,7 +538,10 @@ namespace winstd
params.push_back(p); params.push_back(p);
} }
#pragma warning(push)
#pragma warning(disable: 28020)
return EventWrite(m_h, EventDescriptor, param_count, params.data()); return EventWrite(m_h, EventDescriptor, param_count, params.data());
#pragma warning(pop)
} }
@ -548,7 +554,7 @@ namespace winstd
/// ///
/// \sa [EventWriteString function](https://msdn.microsoft.com/en-us/library/windows/desktop/aa363750v=vs.85.aspx) /// \sa [EventWriteString function](https://msdn.microsoft.com/en-us/library/windows/desktop/aa363750v=vs.85.aspx)
/// ///
inline ULONG write(_In_ UCHAR Level, _In_ ULONGLONG Keyword, _In_ _Printf_format_string_ PCWSTR String, ...) inline ULONG write(_In_ UCHAR Level, _In_ ULONGLONG Keyword, _In_z_ _Printf_format_string_ PCWSTR String, ...)
{ {
assert(m_h); assert(m_h);
@ -625,7 +631,7 @@ namespace winstd
/// ///
/// \param[inout] other A rvalue reference of another session /// \param[inout] other A rvalue reference of another session
/// ///
inline event_session(_Inout_ event_session &&other) : inline event_session(_Inout_ event_session &&other) noexcept :
m_prop(std::move(other.m_prop)), m_prop(std::move(other.m_prop)),
handle(std::move(other)) handle(std::move(other))
{ {
@ -645,7 +651,7 @@ namespace winstd
/// ///
/// \param[inout] other A rvalue reference of another object /// \param[inout] other A rvalue reference of another object
/// ///
inline event_session& operator=(_Inout_ event_session &&other) inline event_session& operator=(_Inout_ event_session &&other) noexcept
{ {
if (this != std::addressof(other)) { if (this != std::addressof(other)) {
(handle<handle_type>&&)*this = std::move(other); (handle<handle_type>&&)*this = std::move(other);
@ -964,7 +970,7 @@ namespace winstd
/// ///
/// Moves the object /// Moves the object
/// ///
inline event_fn_auto(_Inout_ event_fn_auto &&other) : inline event_fn_auto(_Inout_ event_fn_auto &&other) noexcept :
m_ep(other.m_ep), m_ep(other.m_ep),
m_event_dest(other.m_event_dest), m_event_dest(other.m_event_dest),
m_fn_name(std::move(other.m_fn_name)) m_fn_name(std::move(other.m_fn_name))
@ -1001,7 +1007,7 @@ namespace winstd
/// ///
/// Moves the object /// Moves the object
/// ///
inline event_fn_auto& operator=(_Inout_ event_fn_auto &&other) inline event_fn_auto& operator=(_Inout_ event_fn_auto &&other) noexcept
{ {
if (this != &other) { if (this != &other) {
assert(&m_ep == &other.m_ep); assert(&m_ep == &other.m_ep);
@ -1142,6 +1148,7 @@ inline ULONG TdhGetEventInformation(_In_ PEVENT_RECORD pEvent, _In_ ULONG TdhCon
return TdhGetEventInformation(pEvent, TdhContextCount, pTdhContext, info.get(), &ulSize); return TdhGetEventInformation(pEvent, TdhContextCount, pTdhContext, info.get(), &ulSize);
} }
info.reset(nullptr);
return ulResult; return ulResult;
} }
@ -1164,6 +1171,7 @@ inline ULONG TdhGetEventMapInformation(_In_ PEVENT_RECORD pEvent, _In_ LPWSTR pM
return TdhGetEventMapInformation(pEvent, pMapName, info.get(), &ulSize); return TdhGetEventMapInformation(pEvent, pMapName, info.get(), &ulSize);
} }
info.reset(nullptr);
return ulResult; return ulResult;
} }

View File

@ -107,7 +107,9 @@ namespace winstd
/// ///
/// Constructs blank decoding session /// Constructs blank decoding session
/// ///
inline hex_dec() : num(0) inline hex_dec() :
buf(0),
num(0)
{ {
} }
@ -115,13 +117,13 @@ namespace winstd
/// ///
/// Decodes one block of information, and _appends_ it to the output /// Decodes one block of information, and _appends_ it to the output
/// ///
/// \param[out] out Output /// \param[inout] out Output
/// \param[out] is_last Was this the last block of data? Actually, is this block of data complete? /// \param[out ] is_last Was this the last block of data? Actually, is this block of data complete?
/// \param[in ] data Data to decode /// \param[in ] data Data to decode
/// \param[in ] size Length of `data` in bytes /// \param[in ] size Length of `data` in bytes
/// ///
template<class _Ty, class _Ax, class _Tchr> template<class _Ty, class _Ax, class _Tchr>
inline void decode(_Out_ std::vector<_Ty, _Ax> &out, _Out_ bool &is_last, _In_z_count_(size) const _Tchr *data, _In_ size_t size) inline void decode(_Inout_ std::vector<_Ty, _Ax> &out, _Out_ bool &is_last, _In_z_count_(size) const _Tchr *data, _In_ size_t size)
{ {
is_last = false; is_last = false;

View File

@ -107,7 +107,7 @@ template<class _Elem, class _Traits, class _Ax> inline VOID GuidToStringW(_In_ L
#endif #endif
/// @copydoc StringToGuidW() /// @copydoc StringToGuidW()
BOOL WINSTD_API StringToGuidA(_In_z_ LPCSTR lpszGuid, _Out_ LPGUID lpGuid, _Out_opt_ LPCSTR *lpszGuidEnd = NULL); _Success_(return) BOOL WINSTD_API StringToGuidA(_In_z_ LPCSTR lpszGuid, _Out_ LPGUID lpGuid, _Out_opt_ LPCSTR *lpszGuidEnd = NULL);
/// ///
/// Parses string with GUID and stores it to GUID /// Parses string with GUID and stores it to GUID
@ -120,7 +120,7 @@ BOOL WINSTD_API StringToGuidA(_In_z_ LPCSTR lpszGuid, _Out_ LPGUID lpGuid, _Out_
/// - `TRUE` if GUID successfuly parsed; /// - `TRUE` if GUID successfuly parsed;
/// - `FALSE` otherwise. /// - `FALSE` otherwise.
/// ///
BOOL WINSTD_API StringToGuidW(_In_z_ LPCWSTR lpszGuid, _Out_ LPGUID lpGuid, _Out_opt_ LPCWSTR *lpszGuidEnd = NULL); _Success_(return) BOOL WINSTD_API StringToGuidW(_In_z_ LPCWSTR lpszGuid, _Out_ LPGUID lpGuid, _Out_opt_ LPCWSTR *lpszGuidEnd = NULL);
/// @copydoc StringToGuidW() /// @copydoc StringToGuidW()
#ifdef _UNICODE #ifdef _UNICODE
#define StringToGuid StringToGuidW #define StringToGuid StringToGuidW
@ -663,7 +663,7 @@ namespace winstd
/// \param[in] proc Handle of process the memory belongs to /// \param[in] proc Handle of process the memory belongs to
/// \param[in] h Initial object handle value /// \param[in] h Initial object handle value
/// ///
inline vmemory(_In_opt_ handle_type h, _In_ HANDLE proc) : inline vmemory(_In_ handle_type h, _In_ HANDLE proc) :
m_proc(proc), m_proc(proc),
handle<LPVOID>(h) handle<LPVOID>(h)
{ {
@ -674,7 +674,7 @@ namespace winstd
/// ///
/// \param[inout] h A rvalue reference of another object /// \param[inout] h A rvalue reference of another object
/// ///
inline vmemory(_Inout_ vmemory &&h) : inline vmemory(_Inout_ vmemory &&h) noexcept :
m_proc(std::move(h.m_proc)), m_proc(std::move(h.m_proc)),
handle<LPVOID>(std::move(h)) handle<LPVOID>(std::move(h))
{ {
@ -692,7 +692,7 @@ namespace winstd
/// ///
/// \param[inout] other A rvalue reference of another object /// \param[inout] other A rvalue reference of another object
/// ///
inline vmemory& operator=(_Inout_ vmemory &&other) inline vmemory& operator=(_Inout_ vmemory &&other) noexcept
{ {
if (this != std::addressof(other)) { if (this != std::addressof(other)) {
(handle<handle_type>&&)*this = std::move(other); (handle<handle_type>&&)*this = std::move(other);

View File

@ -46,6 +46,8 @@ void winstd::eap_attr::create_ms_mppe_key(_In_ BYTE bVendorType, _In_count_(nKey
nKeySize + // Key nKeySize + // Key
nPaddingLength; // Padding nPaddingLength; // Padding
#pragma warning(push)
#pragma warning(disable: 6386)
LPBYTE p = new BYTE[dwLengthNew]; LPBYTE p = new BYTE[dwLengthNew];
p[0] = 0x00; // Vendor-Id (0x137 = 311 = Microsoft) p[0] = 0x00; // Vendor-Id (0x137 = 311 = Microsoft)
p[1] = 0x00; // --| p[1] = 0x00; // --|
@ -56,6 +58,7 @@ void winstd::eap_attr::create_ms_mppe_key(_In_ BYTE bVendorType, _In_count_(nKey
p[6] = 0x00; // Salt p[6] = 0x00; // Salt
p[7] = 0x00; // --^ p[7] = 0x00; // --^
p[8] = nKeySize; // Key-Length p[8] = nKeySize; // Key-Length
#pragma warning(pop)
memcpy(p + 9, pbKey, nKeySize); // Key memcpy(p + 9, pbKey, nKeySize); // Key
memset(p + 9 + nKeySize, 0, nPaddingLength); // Padding memset(p + 9 + nKeySize, 0, nPaddingLength); // Padding

View File

@ -28,13 +28,15 @@
#if _WIN32_WINNT >= _WIN32_WINNT_VISTA #if _WIN32_WINNT >= _WIN32_WINNT_VISTA
#include "../include/WinStd/ETW.h" #include "../include/WinStd/ETW.h"
#endif #endif
#include "../include/WinStd/Common.h" #include "../include/WinStd/Hex.h"
#include "../include/WinStd/MSI.h" #include "../include/WinStd/MSI.h"
#if defined(SECURITY_WIN32) || defined(SECURITY_KERNEL) || defined(SECURITY_MAC) #if defined(SECURITY_WIN32) || defined(SECURITY_KERNEL) || defined(SECURITY_MAC)
#include "../include/WinStd/Sec.h" #include "../include/WinStd/Sec.h"
#endif #endif
#include "../include/WinStd/Shell.h" #include "../include/WinStd/Shell.h"
#include "../include/WinStd/Win.h" #include "../include/WinStd/Win.h"
#include "../include/WinStd/WinTrust.h"
#include "../include/WinStd/WLAN.h" #include "../include/WinStd/WLAN.h"
#include "../include/WinStd/Common.h"
#include <tchar.h> #include <tchar.h>

View File

@ -25,7 +25,7 @@
// StringToGuidA // StringToGuidA
////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////
BOOL WINSTD_API StringToGuidA(_In_z_ LPCSTR lpszGuid, _Out_ LPGUID lpGuid, _Out_opt_ LPCSTR *lpszGuidEnd) _Success_(return) BOOL WINSTD_API StringToGuidA(_In_z_ LPCSTR lpszGuid, _Out_ LPGUID lpGuid, _Out_opt_ LPCSTR *lpszGuidEnd)
{ {
GUID g; GUID g;
LPSTR lpszEnd; LPSTR lpszEnd;
@ -88,7 +88,7 @@ BOOL WINSTD_API StringToGuidA(_In_z_ LPCSTR lpszGuid, _Out_ LPGUID lpGuid, _Out_
} }
BOOL WINSTD_API StringToGuidW(_In_z_ LPCWSTR lpszGuid, _Out_ LPGUID lpGuid, _Out_opt_ LPCWSTR *lpszGuidEnd) _Success_(return) BOOL WINSTD_API StringToGuidW(_In_z_ LPCWSTR lpszGuid, _Out_ LPGUID lpGuid, _Out_opt_ LPCWSTR *lpszGuidEnd)
{ {
GUID g; GUID g;
LPWSTR lpszEnd; LPWSTR lpszEnd;