| Index: sandbox/win/src/win_utils.cc
|
| diff --git a/sandbox/win/src/win_utils.cc b/sandbox/win/src/win_utils.cc
|
| index 12f818926b4bdb642efc658644b6b9e75ca19e22..34a966ac80e0e39fca9828dc00f58c6e7aee6b6c 100644
|
| --- a/sandbox/win/src/win_utils.cc
|
| +++ b/sandbox/win/src/win_utils.cc
|
| @@ -243,22 +243,21 @@ bool GetPathFromHandle(HANDLE handle, base::string16* path) {
|
| NtQueryObjectFunction NtQueryObject = NULL;
|
| ResolveNTFunctionPtr("NtQueryObject", &NtQueryObject);
|
|
|
| - OBJECT_NAME_INFORMATION initial_buffer;
|
| - OBJECT_NAME_INFORMATION* name = &initial_buffer;
|
| - ULONG size = sizeof(initial_buffer);
|
| + OBJECT_NAME_INFORMATION* name = NULL;
|
| + ULONG size = 0;
|
| // Query the name information a first time to get the size of the name.
|
| NTSTATUS status = NtQueryObject(handle, ObjectNameInformation, name, size,
|
| &size);
|
|
|
| - scoped_ptr<OBJECT_NAME_INFORMATION> name_ptr;
|
| - if (size) {
|
| - name = reinterpret_cast<OBJECT_NAME_INFORMATION*>(new BYTE[size]);
|
| - name_ptr.reset(name);
|
| + if (!size)
|
| + return false;
|
|
|
| - // Query the name information a second time to get the name of the
|
| - // object referenced by the handle.
|
| - status = NtQueryObject(handle, ObjectNameInformation, name, size, &size);
|
| - }
|
| + scoped_ptr<BYTE[]> name_ptr(new BYTE[size]);
|
| + name = reinterpret_cast<OBJECT_NAME_INFORMATION*>(name_ptr.get());
|
| +
|
| + // Query the name information a second time to get the name of the
|
| + // object referenced by the handle.
|
| + status = NtQueryObject(handle, ObjectNameInformation, name, size, &size);
|
|
|
| if (STATUS_SUCCESS != status)
|
| return false;
|
|
|