diff options
Diffstat (limited to 'network/ndis/mux/notifyob/virtual.cpp')
| -rw-r--r-- | network/ndis/mux/notifyob/virtual.cpp | 34 |
1 files changed, 29 insertions, 5 deletions
diff --git a/network/ndis/mux/notifyob/virtual.cpp b/network/ndis/mux/notifyob/virtual.cpp index 5b6cde80..fd3cce0e 100644 --- a/network/ndis/mux/notifyob/virtual.cpp +++ b/network/ndis/mux/notifyob/virtual.cpp @@ -330,17 +330,22 @@ HRESULT CMuxVirtualMiniport::ApplyRegistryChanges(ConfigAction eApplyAction) WCHAR szMiniportGuid[MAX_PATH+1]; LPWSTR lpDevice; LONG lResult = 0; - + int numChars; TraceMsg( L"-->CMuxVirtualMiniport::ApplyRegistryChanges.\n" ); switch( eApplyAction ) { case eActAdd: // Virtual miniport added. - StringFromGUID2( m_guidAdapter, + numChars = StringFromGUID2( m_guidAdapter, szAdapterGuid, MAX_PATH+1 ); + if (numChars == 0) { + + return HRESULT_FROM_WIN32(ERROR_BUFFER_OVERFLOW); + } + StringCchPrintfW ( szAdapterGuidKey, celems(szAdapterGuidKey), L"%s\\%s", @@ -361,10 +366,17 @@ HRESULT CMuxVirtualMiniport::ApplyRegistryChanges(ConfigAction eApplyAction) if ( lResult == ERROR_SUCCESS ) { - StringFromGUID2( m_guidMiniport, + numChars = StringFromGUID2( m_guidMiniport, szMiniportGuid, MAX_PATH+1 ); + if (numChars == 0) { + + RegCloseKey(hkeyAdapterGuid); + + return HRESULT_FROM_WIN32(ERROR_BUFFER_OVERFLOW); + } + lpDevice = AddDevicePrefix( szMiniportGuid ); if ( lpDevice ) { @@ -411,10 +423,15 @@ HRESULT CMuxVirtualMiniport::ApplyRegistryChanges(ConfigAction eApplyAction) case eActRemove: // Virtual miniport removed. - StringFromGUID2( m_guidAdapter, + numChars = StringFromGUID2( m_guidAdapter, szAdapterGuid, MAX_PATH+1 ); + if (numChars == 0) { + + return HRESULT_FROM_WIN32(ERROR_BUFFER_OVERFLOW); + } + StringCchPrintfW( szAdapterGuidKey, celems(szAdapterGuidKey), L"%s\\%s", @@ -434,10 +451,17 @@ HRESULT CMuxVirtualMiniport::ApplyRegistryChanges(ConfigAction eApplyAction) if ( lResult == ERROR_SUCCESS ) { - StringFromGUID2( m_guidMiniport, + numChars = StringFromGUID2( m_guidMiniport, szMiniportGuid, MAX_PATH+1 ); + if (numChars == 0) { + + RegCloseKey(hkeyAdapterGuid); + + return HRESULT_FROM_WIN32(ERROR_BUFFER_OVERFLOW); + } + lpDevice = AddDevicePrefix( szMiniportGuid ); TraceMsg( L" Deleting %s at %s.\n", lpDevice, |
