* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
-#include <precomp.h>
-
-#include "ntobjenum.h"
+#include "precomp.h"
#include <strsafe.h>
WINE_DEFAULT_DEBUG_CHANNEL(ntobjshex);
StringCbCopyExW(buffer, sizeof(buffer), path, &pend, NULL, 0);
if (pend[-1] != '\\')
+ {
*pend++ = '\\';
+ *pend = 0;
+ }
StringCbCatW(buffer, sizeof(buffer), entryName);
LinkTarget->Length = 0;
- DWORD err = NtOpenObject(SYMBOLICLINK_OBJECT, &handle, 0, buffer);
+ DWORD err = NtOpenObject(SYMBOLICLINK_OBJECT, &handle, SYMBOLIC_LINK_QUERY, buffer);
if (!NT_SUCCESS(err))
return HRESULT_FROM_NT(err);
- err = NT_SUCCESS(NtQuerySymbolicLinkObject(handle, LinkTarget, NULL));
+ err = NtQuerySymbolicLinkObject(handle, LinkTarget, NULL);
if (!NT_SUCCESS(err))
return HRESULT_FROM_NT(err);
DWORD entryBufferLength = FIELD_OFFSET(RegPidlEntry, entryName) + sizeof(WCHAR) + cchName * sizeof(WCHAR);
// allocate space for the terminator
- entryBufferLength += 2;
+ entryBufferLength += FIELD_OFFSET(SHITEMID, abID);
RegPidlEntry* entry = (RegPidlEntry*) CoTaskMemAlloc(entryBufferLength);
if (!entry)
}
// allocate space for the terminator
- entryBufferLength += 2;
+ entryBufferLength += FIELD_OFFSET(SHITEMID, abID);
RegPidlEntry* entry = (RegPidlEntry*) CoTaskMemAlloc(entryBufferLength);
if (!entry)
DWORD entryBufferLength = FIELD_OFFSET(RegPidlEntry, entryName) + sizeof(WCHAR) + cchName * sizeof(WCHAR);
- BOOL copyData = dataSize < 32;
+#define MAX_EMBEDDED_DATA 32
+ BOOL copyData = dataSize <= MAX_EMBEDDED_DATA;
if (copyData)
{
entryBufferLength += dataSize + sizeof(WCHAR);
otype = REG_ENTRY_VALUE_WITH_CONTENT;
}
- RegPidlEntry* entry = (RegPidlEntry*) CoTaskMemAlloc(entryBufferLength + 2);
+ // allocate space for the terminator
+ entryBufferLength += FIELD_OFFSET(SHITEMID, abID);
+
+ RegPidlEntry* entry = (RegPidlEntry*) CoTaskMemAlloc(entryBufferLength);
if (!entry)
return E_OUTOFMEMORY;
}
// allocate space for the terminator
- entryBufferLength += 2;
+ entryBufferLength += FIELD_OFFSET(SHITEMID, abID);
NtPidlEntry* entry = (NtPidlEntry*) CoTaskMemAlloc(entryBufferLength);
if (!entry)