Skip to content

Commit

Permalink
qga: vss-win32: Use NULL as an invalid pointer for OpenEvent and Crea…
Browse files Browse the repository at this point in the history
…teEvent

OpenEvent and CreateEvent WinAPI return NULL when failed to open/create
events handles, instead of INVALID_HANDLE_VALUE (although their return
types are HANDLE).
This replaces INVALID_HANDLE_VALUE related to event handles with NULL.

Signed-off-by: Tomoki Sekiyama <tomoki.sekiyama@hds.com>
Reviewed-by: Gal Hammer <ghammer@redhat.com>
Reviewed-by: Yan Vugenfirer <yvugenfi@redhat.com>
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
  • Loading branch information
tsekiyama authored and mdroth committed Feb 23, 2014
1 parent 105a060 commit 4c1b8f1
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 17 deletions.
6 changes: 3 additions & 3 deletions qga/vss-win32/provider.cpp
Expand Up @@ -342,18 +342,18 @@ STDMETHODIMP CQGAVssProvider::CommitSnapshots(VSS_ID SnapshotSetId)
HANDLE hEventFrozen, hEventThaw, hEventTimeout;

hEventFrozen = OpenEvent(EVENT_ALL_ACCESS, FALSE, EVENT_NAME_FROZEN);
if (hEventFrozen == INVALID_HANDLE_VALUE) {
if (!hEventFrozen) {
return E_FAIL;
}

hEventThaw = OpenEvent(EVENT_ALL_ACCESS, FALSE, EVENT_NAME_THAW);
if (hEventThaw == INVALID_HANDLE_VALUE) {
if (!hEventThaw) {
CloseHandle(hEventFrozen);
return E_FAIL;
}

hEventTimeout = OpenEvent(EVENT_ALL_ACCESS, FALSE, EVENT_NAME_TIMEOUT);
if (hEventTimeout == INVALID_HANDLE_VALUE) {
if (!hEventTimeout) {
CloseHandle(hEventFrozen);
CloseHandle(hEventThaw);
return E_FAIL;
Expand Down
24 changes: 10 additions & 14 deletions qga/vss-win32/requester.cpp
Expand Up @@ -50,10 +50,6 @@ static struct QGAVSSContext {

STDAPI requester_init(void)
{
vss_ctx.hEventFrozen = INVALID_HANDLE_VALUE;
vss_ctx.hEventThaw = INVALID_HANDLE_VALUE;
vss_ctx.hEventTimeout = INVALID_HANDLE_VALUE;

COMInitializer initializer; /* to call CoInitializeSecurity */
HRESULT hr = CoInitializeSecurity(
NULL, -1, NULL, NULL, RPC_C_AUTHN_LEVEL_PKT_PRIVACY,
Expand Down Expand Up @@ -94,17 +90,17 @@ STDAPI requester_init(void)

static void requester_cleanup(void)
{
if (vss_ctx.hEventFrozen != INVALID_HANDLE_VALUE) {
if (vss_ctx.hEventFrozen) {
CloseHandle(vss_ctx.hEventFrozen);
vss_ctx.hEventFrozen = INVALID_HANDLE_VALUE;
vss_ctx.hEventFrozen = NULL;
}
if (vss_ctx.hEventThaw != INVALID_HANDLE_VALUE) {
if (vss_ctx.hEventThaw) {
CloseHandle(vss_ctx.hEventThaw);
vss_ctx.hEventThaw = INVALID_HANDLE_VALUE;
vss_ctx.hEventThaw = NULL;
}
if (vss_ctx.hEventTimeout != INVALID_HANDLE_VALUE) {
if (vss_ctx.hEventTimeout) {
CloseHandle(vss_ctx.hEventTimeout);
vss_ctx.hEventTimeout = INVALID_HANDLE_VALUE;
vss_ctx.hEventTimeout = NULL;
}
if (vss_ctx.pAsyncSnapshot) {
vss_ctx.pAsyncSnapshot->Release();
Expand Down Expand Up @@ -374,19 +370,19 @@ void requester_freeze(int *num_vols, ErrorSet *errset)
sa.bInheritHandle = FALSE;

vss_ctx.hEventFrozen = CreateEvent(&sa, TRUE, FALSE, EVENT_NAME_FROZEN);
if (vss_ctx.hEventFrozen == INVALID_HANDLE_VALUE) {
if (!vss_ctx.hEventFrozen) {
err_set(errset, GetLastError(), "failed to create event %s",
EVENT_NAME_FROZEN);
goto out;
}
vss_ctx.hEventThaw = CreateEvent(&sa, TRUE, FALSE, EVENT_NAME_THAW);
if (vss_ctx.hEventThaw == INVALID_HANDLE_VALUE) {
if (!vss_ctx.hEventThaw) {
err_set(errset, GetLastError(), "failed to create event %s",
EVENT_NAME_THAW);
goto out;
}
vss_ctx.hEventTimeout = CreateEvent(&sa, TRUE, FALSE, EVENT_NAME_TIMEOUT);
if (vss_ctx.hEventTimeout == INVALID_HANDLE_VALUE) {
if (!vss_ctx.hEventTimeout) {
err_set(errset, GetLastError(), "failed to create event %s",
EVENT_NAME_TIMEOUT);
goto out;
Expand Down Expand Up @@ -443,7 +439,7 @@ void requester_thaw(int *num_vols, ErrorSet *errset)
{
COMPointer<IVssAsync> pAsync;

if (vss_ctx.hEventThaw == INVALID_HANDLE_VALUE) {
if (!vss_ctx.hEventThaw) {
/*
* In this case, DoSnapshotSet is aborted or not started,
* and no volumes must be frozen. We return without an error.
Expand Down

0 comments on commit 4c1b8f1

Please sign in to comment.