diff --git a/dlls/advapi32/tests/crypt.c b/dlls/advapi32/tests/crypt.c
index f08c4e2a626..8b25cb24f16 100644
--- a/dlls/advapi32/tests/crypt.c
+++ b/dlls/advapi32/tests/crypt.c
@@ -1260,10 +1260,10 @@ static void test_container_sd(void)
     ok(err == ERROR_INSUFFICIENT_BUFFER || broken(err == ERROR_INVALID_PARAMETER), "got %lu\n", err);
     ok(len, "expected len > 0\n");
 
-    sd = HeapAlloc(GetProcessHeap(), 0, len);
+    sd = malloc(len);
     ret = CryptGetProvParam(prov, PP_KEYSET_SEC_DESCR, (BYTE *)sd, &len, OWNER_SECURITY_INFORMATION);
     ok(ret, "got %lu\n", GetLastError());
-    HeapFree(GetProcessHeap(), 0, sd);
+    free(sd);
 
     ret = CryptReleaseContext(prov, 0);
     ok(ret, "got %lu\n", GetLastError());
diff --git a/dlls/advapi32/tests/eventlog.c b/dlls/advapi32/tests/eventlog.c
index 2f6c2bf05b6..5649ca37b3b 100644
--- a/dlls/advapi32/tests/eventlog.c
+++ b/dlls/advapi32/tests/eventlog.c
@@ -445,14 +445,14 @@ static void test_read(void)
     todo_wine
     ok(GetLastError() == ERROR_INVALID_PARAMETER, "Expected ERROR_INVALID_PARAMETER, got %ld\n", GetLastError());
 
-    buf = HeapAlloc(GetProcessHeap(), 0, sizeof(EVENTLOGRECORD));
+    buf = malloc(sizeof(EVENTLOGRECORD));
     SetLastError(0xdeadbeef);
     ret = ReadEventLogA(NULL, EVENTLOG_SEQUENTIAL_READ | EVENTLOG_FORWARDS_READ,
                         0, buf, sizeof(EVENTLOGRECORD), &read, &needed);
     ok(!ret, "Expected failure\n");
     todo_wine
     ok(GetLastError() == ERROR_INVALID_HANDLE, "Expected ERROR_INVALID_HANDLE, got %ld\n", GetLastError());
-    HeapFree(GetProcessHeap(), 0, buf);
+    free(buf);
 
     handle = OpenEventLogA(NULL, "Application");
     if (!handle && (GetLastError() == ERROR_ACCESS_DENIED || GetLastError() == RPC_S_SERVER_UNAVAILABLE))
@@ -463,7 +463,7 @@ static void test_read(void)
     ok(handle != NULL, "OpenEventLogA(Application) failed : %ld\n", GetLastError());
 
     /* Show that we need the proper dwFlags with a (for the rest) proper call */
-    buf = HeapAlloc(GetProcessHeap(), 0, sizeof(EVENTLOGRECORD));
+    buf = malloc(sizeof(EVENTLOGRECORD));
 
     SetLastError(0xdeadbeef);
     ret = ReadEventLogA(handle, 0, 0, buf, sizeof(EVENTLOGRECORD), &read, &needed);
@@ -504,7 +504,7 @@ static void test_read(void)
     todo_wine
     ok(GetLastError() == ERROR_INVALID_PARAMETER, "Expected ERROR_INVALID_PARAMETER, got %ld\n", GetLastError());
 
-    HeapFree(GetProcessHeap(), 0, buf);
+    free(buf);
 
     /* First check if there are any records (in practice only on Wine: FIXME) */
     count = 0;
@@ -517,7 +517,7 @@ static void test_read(void)
     }
 
     /* Get the buffer size for the first record */
-    buf = HeapAlloc(GetProcessHeap(), 0, sizeof(EVENTLOGRECORD));
+    buf = malloc(sizeof(EVENTLOGRECORD));
     read = needed = 0xdeadbeef;
     SetLastError(0xdeadbeef);
     ret = ReadEventLogA(handle, EVENTLOG_SEQUENTIAL_READ | EVENTLOG_FORWARDS_READ,
@@ -529,7 +529,7 @@ static void test_read(void)
 
     /* Read the first record */
     toread = needed;
-    buf = HeapReAlloc(GetProcessHeap(), 0, buf, toread);
+    buf = realloc(buf, toread);
     read = needed = 0xdeadbeef;
     SetLastError(0xdeadbeef);
     ret = ReadEventLogA(handle, EVENTLOG_SEQUENTIAL_READ | EVENTLOG_FORWARDS_READ, 0, buf, toread, &read, &needed);
@@ -538,7 +538,7 @@ static void test_read(void)
        broken(read < toread), /* NT4 wants a buffer size way bigger than just 1 record */
        "Expected the requested size to be read\n");
     ok(needed == 0, "Expected no extra bytes to be read\n");
-    HeapFree(GetProcessHeap(), 0, buf);
+    free(buf);
 
     CloseEventLog(handle);
 }
@@ -785,7 +785,7 @@ static void test_readwrite(void)
     if (pCreateWellKnownSid)
     {
         sidsize = SECURITY_MAX_SID_SIZE;
-        user = HeapAlloc(GetProcessHeap(), 0, sidsize);
+        user = malloc(sidsize);
         SetLastError(0xdeadbeef);
         pCreateWellKnownSid(WinInteractiveSid, NULL, user, &sidsize);
         sidavailable = TRUE;
@@ -846,12 +846,12 @@ static void test_readwrite(void)
         ok(ret, "Expected success : %ld\n", GetLastError());
 
         /* Needed to catch earlier Vista (with no ServicePack for example) */
-        buf = HeapAlloc(GetProcessHeap(), 0, sizeof(EVENTLOGRECORD));
+        buf = malloc(sizeof(EVENTLOGRECORD));
         if (!(ret = ReadEventLogA(handle, EVENTLOG_SEQUENTIAL_READ | EVENTLOG_FORWARDS_READ,
                                   0, buf, sizeof(EVENTLOGRECORD), &read, &needed)) &&
             GetLastError() == ERROR_INSUFFICIENT_BUFFER)
         {
-            buf = HeapReAlloc(GetProcessHeap(), 0, buf, needed);
+            buf = realloc(buf, needed);
             ret = ReadEventLogA(handle, EVENTLOG_SEQUENTIAL_READ | EVENTLOG_FORWARDS_READ,
                                 0, buf, needed, &read, &needed);
         }
@@ -865,7 +865,7 @@ static void test_readwrite(void)
             if (record->EventType == EVENTLOG_SUCCESS)
                 on_vista = TRUE;
         }
-        HeapFree(GetProcessHeap(), 0, buf);
+        free(buf);
     }
 
     /* This will clear the eventlog. The record numbering for new
@@ -949,13 +949,13 @@ static void test_readwrite(void)
         size = 0;
         SetLastError(0xdeadbeef);
         pGetComputerNameExA(ComputerNameDnsFullyQualified, NULL, &size);
-        localcomputer = HeapAlloc(GetProcessHeap(), 0, size);
+        localcomputer = malloc(size);
         pGetComputerNameExA(ComputerNameDnsFullyQualified, localcomputer, &size);
     }
     else
     {
         size = MAX_COMPUTERNAME_LENGTH + 1;
-        localcomputer = HeapAlloc(GetProcessHeap(), 0, size);
+        localcomputer = malloc(size);
         GetComputerNameA(localcomputer, &size);
     }
 
@@ -964,7 +964,7 @@ static void test_readwrite(void)
     ok(handle != NULL, "OpenEventLogA(%s) failed : %ld\n", eventlogname, GetLastError());
     i = 0;
     size = sizeof(EVENTLOGRECORD) + 128;
-    buf = HeapAlloc(GetProcessHeap(), 0, size);
+    buf = malloc(size);
     for (;;)
     {
         DWORD read, needed;
@@ -989,9 +989,9 @@ static void test_readwrite(void)
 
         if (needed > size)
         {
-             HeapFree(GetProcessHeap(), 0, buf);
+             free(buf);
              size = needed;
-             buf = HeapAlloc(GetProcessHeap(), 0, size);
+             buf = malloc(size);
         }
         ret = ReadEventLogA(handle, EVENTLOG_SEQUENTIAL_READ | EVENTLOG_FORWARDS_READ,
                             0, buf, needed, &read, &needed);
@@ -1069,7 +1069,7 @@ static void test_readwrite(void)
         winetest_pop_context();
         i++;
     }
-    HeapFree(GetProcessHeap(), 0, buf);
+    free(buf);
     CloseEventLog(handle);
 
     /* Test clearing a real eventlog */
@@ -1088,8 +1088,8 @@ static void test_readwrite(void)
     CloseEventLog(handle);
 
 cleanup:
-    HeapFree(GetProcessHeap(), 0, localcomputer);
-    HeapFree(GetProcessHeap(), 0, user);
+    free(localcomputer);
+    free(user);
 }
 
 /* Before Vista:
@@ -1240,7 +1240,7 @@ static void test_start_trace(void)
     LONG ret;
 
     buffersize = sizeof(EVENT_TRACE_PROPERTIES) + sizeof(sessionname) + sizeof(filepath);
-    properties = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, buffersize);
+    properties = calloc(1, buffersize);
     properties->Wnode.BufferSize = buffersize;
     properties->Wnode.Flags = WNODE_FLAG_TRACED_GUID;
     properties->LogFileMode = EVENT_TRACE_FILE_MODE_NONE;
@@ -1317,7 +1317,7 @@ static void test_start_trace(void)
     /* clean up */
     ControlTraceA(handle, sessionname, properties, EVENT_TRACE_CONTROL_STOP);
 done:
-    HeapFree(GetProcessHeap(), 0, properties);
+    free(properties);
     DeleteFileA(filepath);
 }
 
diff --git a/dlls/advapi32/tests/lsa.c b/dlls/advapi32/tests/lsa.c
index e68de388002..16697ebae4b 100644
--- a/dlls/advapi32/tests/lsa.c
+++ b/dlls/advapi32/tests/lsa.c
@@ -243,15 +243,15 @@ static void test_LsaLookupNames2(void)
         return;
     }
 
-    name[0].Buffer = HeapAlloc(GetProcessHeap(), 0, sizeof(n1));
+    name[0].Buffer = malloc(sizeof(n1));
     name[0].Length = name[0].MaximumLength = sizeof(n1);
     memcpy(name[0].Buffer, n1, sizeof(n1));
 
-    name[1].Buffer = HeapAlloc(GetProcessHeap(), 0, sizeof(n1));
+    name[1].Buffer = malloc(sizeof(n1));
     name[1].Length = name[1].MaximumLength = sizeof(n1) - sizeof(WCHAR);
     memcpy(name[1].Buffer, n1, sizeof(n1) - sizeof(WCHAR));
 
-    name[2].Buffer = HeapAlloc(GetProcessHeap(), 0, sizeof(n2));
+    name[2].Buffer = malloc(sizeof(n2));
     name[2].Length = name[2].MaximumLength = sizeof(n2);
     memcpy(name[2].Buffer, n2, sizeof(n2));
 
@@ -307,9 +307,9 @@ static void test_LsaLookupNames2(void)
     LsaFreeMemory(sids);
     LsaFreeMemory(domains);
 
-    HeapFree(GetProcessHeap(), 0, name[0].Buffer);
-    HeapFree(GetProcessHeap(), 0, name[1].Buffer);
-    HeapFree(GetProcessHeap(), 0, name[2].Buffer);
+    free(name[0].Buffer);
+    free(name[1].Buffer);
+    free(name[2].Buffer);
 
     status = LsaClose(handle);
     ok(status == STATUS_SUCCESS, "LsaClose() failed, returned 0x%08lx\n", status);
diff --git a/dlls/advapi32/tests/registry.c b/dlls/advapi32/tests/registry.c
index c2b73a8a3fa..cff09e1a5c5 100644
--- a/dlls/advapi32/tests/registry.c
+++ b/dlls/advapi32/tests/registry.c
@@ -195,7 +195,7 @@ static void _test_hkey_main_Value_A(int line, LPCSTR name, LPCSTR string,
     lok(type == REG_SZ, "RegQueryValueExA/1 returned type %ld\n", type);
     lok(cbData == full_byte_len, "cbData=%ld instead of %ld or %ld\n", cbData, full_byte_len, str_byte_len);
 
-    value = HeapAlloc(GetProcessHeap(), 0, cbData+1);
+    value = malloc(cbData+1);
     memset(value, 0xbd, cbData+1);
     type=0xdeadbeef;
     ret = RegQueryValueExA(hkey_main, name, NULL, &type, value, &cbData);
@@ -213,7 +213,7 @@ static void _test_hkey_main_Value_A(int line, LPCSTR name, LPCSTR string,
            debugstr_an(string, full_byte_len), full_byte_len);
         lok(*(value+cbData) == 0xbd, "RegQueryValueExA/2 overflowed at offset %lu: %02x != bd\n", cbData, *(value+cbData));
     }
-    HeapFree(GetProcessHeap(), 0, value);
+    free(value);
 }
 
 #define test_hkey_main_Value_W(name, string, full_byte_len) _test_hkey_main_Value_W(__LINE__, name, string, full_byte_len)
@@ -243,7 +243,7 @@ static void _test_hkey_main_Value_W(int line, LPCWSTR name, LPCWSTR string,
         "cbData=%ld instead of %ld\n", cbData, full_byte_len);
 
     /* Give enough space to overflow by one WCHAR */
-    value = HeapAlloc(GetProcessHeap(), 0, cbData+2);
+    value = malloc(cbData+2);
     memset(value, 0xbd, cbData+2);
     type=0xdeadbeef;
     ret = RegQueryValueExW(hkey_main, name, NULL, &type, value, &cbData);
@@ -258,7 +258,7 @@ static void _test_hkey_main_Value_W(int line, LPCWSTR name, LPCWSTR string,
     /* This implies that when cbData == 0, RegQueryValueExW() should not modify the buffer */
     lok(*(value+cbData) == 0xbd, "RegQueryValueExW/2 overflowed at %lu: %02x != bd\n", cbData, *(value+cbData));
     lok(*(value+cbData+1) == 0xbd, "RegQueryValueExW/2 overflowed at %lu+1: %02x != bd\n", cbData, *(value+cbData+1));
-    HeapFree(GetProcessHeap(), 0, value);
+    free(value);
 }
 
 static void test_set_value(void)
@@ -1218,7 +1218,7 @@ static void test_reg_open_key(void)
     ok(ret == ERROR_SUCCESS,
        "Expected SetEntriesInAclA to return ERROR_SUCCESS, got %lu, last error %lu\n", ret, GetLastError());
 
-    sd = HeapAlloc(GetProcessHeap(), 0, SECURITY_DESCRIPTOR_MIN_LENGTH);
+    sd = malloc(SECURITY_DESCRIPTOR_MIN_LENGTH);
     bRet = InitializeSecurityDescriptor(sd, SECURITY_DESCRIPTOR_REVISION);
     ok(bRet == TRUE,
        "Expected InitializeSecurityDescriptor to return TRUE, got %d, last error %lu\n", bRet, GetLastError());
@@ -1256,7 +1256,7 @@ static void test_reg_open_key(void)
         RegCloseKey(hkResult);
     }
 
-    HeapFree(GetProcessHeap(), 0, sd);
+    free(sd);
     LocalFree(key_acl);
     FreeSid(world_sid);
     RegDeleteKeyA(hkRoot64, "");
@@ -1380,7 +1380,7 @@ static void test_reg_create_key(void)
     ok(dwRet == ERROR_SUCCESS,
        "Expected SetEntriesInAclA to return ERROR_SUCCESS, got %lu, last error %lu\n", dwRet, GetLastError());
 
-    sd = HeapAlloc(GetProcessHeap(), 0, SECURITY_DESCRIPTOR_MIN_LENGTH);
+    sd = malloc(SECURITY_DESCRIPTOR_MIN_LENGTH);
     bRet = InitializeSecurityDescriptor(sd, SECURITY_DESCRIPTOR_REVISION);
     ok(bRet == TRUE,
        "Expected InitializeSecurityDescriptor to return TRUE, got %d, last error %lu\n", bRet, GetLastError());
@@ -1418,7 +1418,7 @@ static void test_reg_create_key(void)
         RegCloseKey(hkey1);
     }
 
-    HeapFree(GetProcessHeap(), 0, sd);
+    free(sd);
     LocalFree(key_acl);
     FreeSid(world_sid);
     RegDeleteKeyA(hkRoot64, "");
@@ -2425,7 +2425,7 @@ static void test_symlinks(void)
     pRtlFormatCurrentUserKeyPath( &target_str );
 
     target_len = target_str.Length + sizeof(targetW);
-    target = HeapAlloc( GetProcessHeap(), 0, target_len );
+    target = malloc( target_len );
     memcpy( target, target_str.Buffer, target_str.Length );
     memcpy( target + target_str.Length/sizeof(WCHAR), targetW, sizeof(targetW) );
 
@@ -2530,7 +2530,7 @@ static void test_symlinks(void)
     ok( !status, "NtDeleteKey failed: 0x%08lx\n", status );
     RegCloseKey( link );
 
-    HeapFree( GetProcessHeap(), 0, target );
+    free( target );
     pRtlFreeUnicodeString( &target_str );
 }
 
diff --git a/dlls/advapi32/tests/security.c b/dlls/advapi32/tests/security.c
index 2840f6bd75a..e2823fea63a 100644
--- a/dlls/advapi32/tests/security.c
+++ b/dlls/advapi32/tests/security.c
@@ -184,7 +184,7 @@ static void init(void)
 
 static SECURITY_DESCRIPTOR* test_get_security_descriptor(HANDLE handle, int line)
 {
-    /* use HeapFree(GetProcessHeap(), 0, sd); when done */
+    /* use free(sd); when done */
     DWORD ret, length, needed;
     SECURITY_DESCRIPTOR *sd;
 
@@ -197,7 +197,7 @@ static SECURITY_DESCRIPTOR* test_get_security_descriptor(HANDLE handle, int line
     ok_(__FILE__, line)(needed != 0xdeadbeef, "GetKernelObjectSecurity should return required buffer length\n");
 
     length = needed;
-    sd = HeapAlloc(GetProcessHeap(), 0, length);
+    sd = malloc(length);
 
     needed = 0xdeadbeef;
     SetLastError(0xdeadbeef);
@@ -224,7 +224,7 @@ static void test_owner_equal(HANDLE Handle, PSID expected, int line)
                         debugstr_sid(owner), debugstr_sid(expected));
     ok_(__FILE__, line)(!owner_defaulted, "Defaulted is true\n");
 
-    HeapFree(GetProcessHeap(), 0, queriedSD);
+    free(queriedSD);
 }
 
 static void test_group_equal(HANDLE Handle, PSID expected, int line)
@@ -243,7 +243,7 @@ static void test_group_equal(HANDLE Handle, PSID expected, int line)
                         debugstr_sid(group), debugstr_sid(expected));
     ok_(__FILE__, line)(!group_defaulted, "Defaulted is true\n");
 
-    HeapFree(GetProcessHeap(), 0, queriedSD);
+    free(queriedSD);
 }
 
 static void test_ConvertStringSidToSid(void)
@@ -842,7 +842,7 @@ static void test_FileSecurity(void)
     ok (retSize > sizeof (SECURITY_DESCRIPTOR), "GetFileSecurityA returned size %ld\n", retSize);
 
     sdSize = retSize;
-    sd = HeapAlloc (GetProcessHeap (), 0, sdSize);
+    sd = malloc(sdSize);
 
     /* Get security descriptor for real */
     retSize = -1;
@@ -860,7 +860,7 @@ static void test_FileSecurity(void)
     ok (rc, "SetFileSecurityA "
         "was not expected to fail '%s': %ld\n", file, GetLastError());
 
-    HeapFree (GetProcessHeap (), 0, sd);
+    free(sd);
 
     /* Repeat for the temporary directory ... */
 
@@ -875,7 +875,7 @@ static void test_FileSecurity(void)
     ok (retSize > sizeof (SECURITY_DESCRIPTOR), "GetFileSecurityA returned size %ld\n", retSize);
 
     sdSize = retSize;
-    sd = HeapAlloc (GetProcessHeap (), 0, sdSize);
+    sd = malloc(sdSize);
 
     /* Get security descriptor for real */
     retSize = -1;
@@ -892,7 +892,7 @@ static void test_FileSecurity(void)
     rc = pSetFileSecurityA (path, request, sd);
     ok (rc, "SetFileSecurityA "
         "was not expected to fail '%s': %ld\n", path, GetLastError());
-    HeapFree (GetProcessHeap (), 0, sd);
+    free(sd);
 
     /* Old test */
     strcpy (wintmpdir, "\\Should not exist");
@@ -927,7 +927,7 @@ cleanup:
        "expected ERROR_INSUFFICIENT_BUFFER got %ld\n", GetLastError());
     ok(sdSize > sizeof(SECURITY_DESCRIPTOR), "got sd size %ld\n", sdSize);
 
-    sd = HeapAlloc(GetProcessHeap (), 0, sdSize);
+    sd = malloc(sdSize);
     retSize = 0xdeadbeef;
     SetLastError(0xdeadbeef);
     rc = GetFileSecurityA(file, OWNER_SECURITY_INFORMATION|GROUP_SECURITY_INFORMATION|DACL_SECURITY_INFORMATION,
@@ -1151,7 +1151,7 @@ todo_wine {
     ok(rc, "DeleteFile error %ld\n", GetLastError());
 
     CloseHandle(token);
-    HeapFree(GetProcessHeap(), 0, sd);
+    free(sd);
 }
 
 static void test_AccessCheck(void)
@@ -1188,12 +1188,12 @@ static void test_AccessCheck(void)
         return;
     }
 
-    Acl = HeapAlloc(GetProcessHeap(), 0, 256);
+    Acl = malloc(256);
     res = InitializeAcl(Acl, 256, ACL_REVISION);
     if(!res && GetLastError() == ERROR_CALL_NOT_IMPLEMENTED)
     {
         skip("ACLs not implemented - skipping tests\n");
-        HeapFree(GetProcessHeap(), 0, Acl);
+        free(Acl);
         return;
     }
     ok(res, "InitializeAcl failed with error %ld\n", GetLastError());
@@ -1209,7 +1209,7 @@ static void test_AccessCheck(void)
         DOMAIN_ALIAS_RID_USERS, 0, 0, 0, 0, 0, 0, &UsersSid);
     ok(res, "AllocateAndInitializeSid failed with error %ld\n", GetLastError());
 
-    SecurityDescriptor = HeapAlloc(GetProcessHeap(), 0, SECURITY_DESCRIPTOR_MIN_LENGTH);
+    SecurityDescriptor = malloc(SECURITY_DESCRIPTOR_MIN_LENGTH);
 
     res = InitializeSecurityDescriptor(SecurityDescriptor, SECURITY_DESCRIPTOR_REVISION);
     ok(res, "InitializeSecurityDescriptor failed with error %ld\n", GetLastError());
@@ -1218,7 +1218,7 @@ static void test_AccessCheck(void)
     ok(res, "SetSecurityDescriptorDacl failed with error %ld\n", GetLastError());
 
     PrivSetLen = FIELD_OFFSET(PRIVILEGE_SET, Privilege[16]);
-    PrivSet = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, PrivSetLen);
+    PrivSet = calloc(1, PrivSetLen);
     PrivSet->PrivilegeCount = 16;
 
     res = OpenProcessToken(GetCurrentProcess(), TOKEN_DUPLICATE|TOKEN_QUERY, &ProcessToken);
@@ -1760,9 +1760,9 @@ static void test_AccessCheck(void)
         FreeSid(AdminSid);
     if (UsersSid)
         FreeSid(UsersSid);
-    HeapFree(GetProcessHeap(), 0, Acl);
-    HeapFree(GetProcessHeap(), 0, SecurityDescriptor);
-    HeapFree(GetProcessHeap(), 0, PrivSet);
+    free(Acl);
+    free(SecurityDescriptor);
+    free(PrivSet);
 }
 
 static TOKEN_USER *get_alloc_token_user( HANDLE token )
@@ -1776,7 +1776,7 @@ static TOKEN_USER *get_alloc_token_user( HANDLE token )
     ok(GetLastError() == ERROR_INSUFFICIENT_BUFFER,
        "Expected ERROR_INSUFFICIENT_BUFFER, got %ld\n", GetLastError());
 
-    token_user = HeapAlloc( GetProcessHeap(), 0, size );
+    token_user = malloc( size );
     ret = GetTokenInformation( token, TokenUser, token_user, size, &size );
     ok(ret, "GetTokenInformation failed with error %ld\n", GetLastError());
 
@@ -1794,7 +1794,7 @@ static TOKEN_OWNER *get_alloc_token_owner( HANDLE token )
     ok(GetLastError() == ERROR_INSUFFICIENT_BUFFER,
        "Expected ERROR_INSUFFICIENT_BUFFER, got %ld\n", GetLastError());
 
-    token_owner = HeapAlloc( GetProcessHeap(), 0, size );
+    token_owner = malloc( size );
     ret = GetTokenInformation( token, TokenOwner, token_owner, size, &size );
     ok(ret, "GetTokenInformation failed with error %ld\n", GetLastError());
 
@@ -1812,7 +1812,7 @@ static TOKEN_PRIMARY_GROUP *get_alloc_token_primary_group( HANDLE token )
     ok(GetLastError() == ERROR_INSUFFICIENT_BUFFER,
        "Expected ERROR_INSUFFICIENT_BUFFER, got %ld\n", GetLastError());
 
-    token_primary_group = HeapAlloc( GetProcessHeap(), 0, size );
+    token_primary_group = malloc( size );
     ret = GetTokenInformation( token, TokenPrimaryGroup, token_primary_group, size, &size );
     ok(ret, "GetTokenInformation failed with error %ld\n", GetLastError());
 
@@ -1870,7 +1870,7 @@ static void test_token_attr(void)
     ok(!ret && GetLastError() == ERROR_INSUFFICIENT_BUFFER,
         "%d with error %ld\n", ret, GetLastError());
     Size2 -= 1;
-    Groups = HeapAlloc(GetProcessHeap(), 0, Size2);
+    Groups = malloc(Size2);
     memset(Groups, 0xcc, Size2);
     Size = 0;
     ret = GetTokenInformation(Token, TokenGroups, Groups, Size2, &Size);
@@ -1880,14 +1880,14 @@ static void test_token_attr(void)
     if(!ret)
         ok(*((BYTE*)Groups) == 0xcc, "buffer altered\n");
 
-    HeapFree(GetProcessHeap(), 0, Groups);
+    free(Groups);
 
     SetLastError(0xdeadbeef);
     ret = GetTokenInformation(Token, TokenGroups, NULL, 0, &Size);
     ok(!ret && GetLastError() == ERROR_INSUFFICIENT_BUFFER,
         "GetTokenInformation(TokenGroups) %s with error %ld\n",
         ret ? "succeeded" : "failed", GetLastError());
-    Groups = HeapAlloc(GetProcessHeap(), 0, Size);
+    Groups = malloc(Size);
     SetLastError(0xdeadbeef);
     ret = GetTokenInformation(Token, TokenGroups, Groups, Size, &Size);
     ok(ret, "GetTokenInformation(TokenGroups) failed with error %ld\n", GetLastError());
@@ -1913,13 +1913,13 @@ static void test_token_attr(void)
         }
         else trace("attr: 0x%08lx LookupAccountSid failed with error %ld\n", Groups->Groups[i].Attributes, GetLastError());
     }
-    HeapFree(GetProcessHeap(), 0, Groups);
+    free(Groups);
 
     /* user */
     ret = GetTokenInformation(Token, TokenUser, NULL, 0, &Size);
     ok(!ret && (GetLastError() == ERROR_INSUFFICIENT_BUFFER),
         "GetTokenInformation(TokenUser) failed with error %ld\n", GetLastError());
-    User = HeapAlloc(GetProcessHeap(), 0, Size);
+    User = malloc(Size);
     ret = GetTokenInformation(Token, TokenUser, User, Size, &Size);
     ok(ret,
         "GetTokenInformation(TokenUser) failed with error %ld\n", GetLastError());
@@ -1927,13 +1927,13 @@ static void test_token_attr(void)
     ConvertSidToStringSidA(User->User.Sid, &SidString);
     trace("TokenUser: %s attr: 0x%08lx\n", SidString, User->User.Attributes);
     LocalFree(SidString);
-    HeapFree(GetProcessHeap(), 0, User);
+    free(User);
 
     /* owner */
     ret = GetTokenInformation(Token, TokenOwner, NULL, 0, &Size);
     ok(!ret && (GetLastError() == ERROR_INSUFFICIENT_BUFFER),
         "GetTokenInformation(TokenOwner) failed with error %ld\n", GetLastError());
-    Owner = HeapAlloc(GetProcessHeap(), 0, Size);
+    Owner = malloc(Size);
     ret = GetTokenInformation(Token, TokenOwner, Owner, Size, &Size);
     ok(ret,
         "GetTokenInformation(TokenOwner) failed with error %ld\n", GetLastError());
@@ -1941,7 +1941,7 @@ static void test_token_attr(void)
     ConvertSidToStringSidA(Owner->Owner, &SidString);
     trace("TokenOwner: %s\n", SidString);
     LocalFree(SidString);
-    HeapFree(GetProcessHeap(), 0, Owner);
+    free(Owner);
 
     /* logon */
     ret = GetTokenInformation(Token, TokenLogonSid, NULL, 0, &Size);
@@ -1951,7 +1951,7 @@ static void test_token_attr(void)
     {
         ok(!ret && (GetLastError() == ERROR_INSUFFICIENT_BUFFER),
             "GetTokenInformation(TokenLogonSid) failed with error %ld\n", GetLastError());
-        Groups = HeapAlloc(GetProcessHeap(), 0, Size);
+        Groups = malloc(Size);
         ret = GetTokenInformation(Token, TokenLogonSid, Groups, Size, &Size);
         ok(ret,
             "GetTokenInformation(TokenLogonSid) failed with error %ld\n", GetLastError());
@@ -1973,14 +1973,14 @@ static void test_token_attr(void)
             }
         }
 
-        HeapFree(GetProcessHeap(), 0, Groups);
+        free(Groups);
     }
 
     /* privileges */
     ret = GetTokenInformation(Token, TokenPrivileges, NULL, 0, &Size);
     ok(!ret && (GetLastError() == ERROR_INSUFFICIENT_BUFFER),
         "GetTokenInformation(TokenPrivileges) failed with error %ld\n", GetLastError());
-    Privileges = HeapAlloc(GetProcessHeap(), 0, Size);
+    Privileges = malloc(Size);
     ret = GetTokenInformation(Token, TokenPrivileges, Privileges, Size, &Size);
     ok(ret,
         "GetTokenInformation(TokenPrivileges) failed with error %ld\n", GetLastError());
@@ -1992,7 +1992,7 @@ static void test_token_attr(void)
         LookupPrivilegeNameA(NULL, &Privileges->Privileges[i].Luid, Name, &NameLen);
         trace("\t%s, 0x%lx\n", Name, Privileges->Privileges[i].Attributes);
     }
-    HeapFree(GetProcessHeap(), 0, Privileges);
+    free(Privileges);
 
     ret = DuplicateToken(Token, SecurityAnonymous, &ImpersonationToken);
     ok(ret, "DuplicateToken failed with error %ld\n", GetLastError());
@@ -2009,7 +2009,7 @@ static void test_token_attr(void)
     ok(!ret && (GetLastError() == ERROR_INSUFFICIENT_BUFFER),
         "GetTokenInformation(TokenDefaultDacl) failed with error %lu\n", GetLastError());
 
-    Dacl = HeapAlloc(GetProcessHeap(), 0, Size);
+    Dacl = malloc(Size);
     ret = GetTokenInformation(Token, TokenDefaultDacl, Dacl, Size, &Size);
     ok(ret, "GetTokenInformation(TokenDefaultDacl) failed with error %lu\n", GetLastError());
 
@@ -2049,7 +2049,7 @@ static void test_token_attr(void)
     } else
         win_skip("TOKEN_DEFAULT_DACL size too small on WoW64\n");
 
-    HeapFree(GetProcessHeap(), 0, Dacl);
+    free(Dacl);
     CloseHandle(Token);
 }
 
@@ -2167,10 +2167,10 @@ static void test_CreateWellKnownSid(void)
     ok(!ret, "CreateWellKnownSid succeeded\n");
     ok(error == ERROR_INVALID_PARAMETER, "expected ERROR_INVALID_PARAMETER, got %lu\n", error);
 
-    sid = HeapAlloc(GetProcessHeap(), 0, size);
+    sid = malloc(size);
     ret = CreateWellKnownSid(WinInteractiveSid, NULL, sid, &size);
     ok(ret, "CreateWellKnownSid failed %lu\n", GetLastError());
-    HeapFree(GetProcessHeap(), 0, sid);
+    free(sid);
 
     /* a domain sid usually have three subauthorities but we test that CreateWellKnownSid doesn't check it */
     AllocateAndInitializeSid(&ident, 6, SECURITY_NT_NON_UNIQUE, 12, 23, 34, 45, 56, 0, 0, &domainsid);
@@ -2410,7 +2410,7 @@ static void test_LookupAccountSid(void)
     ok(ret, "OpenProcessToken failed with error %ld\n", GetLastError());
     ret = GetTokenInformation(hToken, TokenUser, NULL, 0, &cbti);
     ok(!ret, "GetTokenInformation failed with error %ld\n", GetLastError());
-    ptiUser = HeapAlloc(GetProcessHeap(), 0, cbti);
+    ptiUser = malloc(cbti);
     if (GetTokenInformation(hToken, TokenUser, ptiUser, cbti, &cbti))
     {
         acc_sizeA = dom_sizeA = MAX_PATH;
@@ -2421,7 +2421,7 @@ static void test_LookupAccountSid(void)
         ok(ret, "GetUserNameA() Expected TRUE, got FALSE\n");
         ok(lstrcmpA(usernameA, accountA) == 0, "LookupAccountSidA() Expected account name: %s got: %s\n", usernameA, accountA );
     }
-    HeapFree(GetProcessHeap(), 0, ptiUser);
+    free(ptiUser);
 
     trace("Well Known SIDs:\n");
     for (i = 0; i <= 60; i++)
@@ -2545,8 +2545,8 @@ static void check_wellknown_name(const char* name, WELL_KNOWN_SID_TYPE result)
     domain_size = 0;
     ret = LookupAccountNameA(NULL, name, NULL, &sid_size, NULL, &domain_size, &sid_use);
     ok(!ret, " %s Should have failed to lookup account name\n", name);
-    psid = HeapAlloc(GetProcessHeap(),0,sid_size);
-    domain = HeapAlloc(GetProcessHeap(),0,domain_size);
+    psid = malloc(sid_size);
+    domain = malloc(domain_size);
     ret = LookupAccountNameA(NULL, name, psid, &sid_size, domain, &domain_size, &sid_use);
 
     if (!result)
@@ -2584,8 +2584,8 @@ static void check_wellknown_name(const char* name, WELL_KNOWN_SID_TYPE result)
 
 cleanup:
     FreeSid(domainsid);
-    HeapFree(GetProcessHeap(),0,psid);
-    HeapFree(GetProcessHeap(),0,domain);
+    free(psid);
+    free(domain);
 }
 
 static void test_LookupAccountName(void)
@@ -2632,8 +2632,8 @@ static void test_LookupAccountName(void)
     sid_save = sid_size;
     domain_save = domain_size;
 
-    psid = HeapAlloc(GetProcessHeap(), 0, sid_size);
-    domain = HeapAlloc(GetProcessHeap(), 0, domain_size);
+    psid = malloc(sid_size);
+    domain = malloc(domain_size);
 
     /* try valid account name */
     ret = LookupAccountNameA(NULL, user_name, psid, &sid_size, domain, &domain_size, &sid_use);
@@ -2696,8 +2696,8 @@ static void test_LookupAccountName(void)
     ok(sid_size == sid_save, "Expected %ld, got %ld\n", sid_save, sid_size);
     ok(domain_size == domain_save, "Expected %ld, got %ld\n", domain_save, domain_size);
 
-    HeapFree(GetProcessHeap(), 0, psid);
-    HeapFree(GetProcessHeap(), 0, domain);
+    free(psid);
+    free(domain);
 
     /* get sizes for NULL account name */
     sid_size = 0;
@@ -2716,8 +2716,8 @@ static void test_LookupAccountName(void)
         ok(domain_size != 0, "Expected non-zero domain size\n");
         ok(sid_use == (SID_NAME_USE)0xcafebabe, "Expected 0xcafebabe, got %d\n", sid_use);
 
-        psid = HeapAlloc(GetProcessHeap(), 0, sid_size);
-        domain = HeapAlloc(GetProcessHeap(), 0, domain_size);
+        psid = malloc(sid_size);
+        domain = malloc(domain_size);
 
         /* try NULL account name */
         ret = LookupAccountNameA(NULL, NULL, psid, &sid_size, domain, &domain_size, &sid_use);
@@ -2728,8 +2728,8 @@ static void test_LookupAccountName(void)
            "Got %s for account and %s for domain, these should be the same\n", account, domain);
         ok(sid_use == SidTypeDomain, "Expected SidTypeDomain (%d), got %d\n", SidTypeDomain, sid_use);
 
-        HeapFree(GetProcessHeap(), 0, psid);
-        HeapFree(GetProcessHeap(), 0, domain);
+        free(psid);
+        free(domain);
     }
 
     /* try an invalid account name */
@@ -2768,14 +2768,14 @@ static void test_LookupAccountName(void)
        "LookupAccountNameA failed: %ld\n", GetLastError());
     if (GetLastError() == ERROR_INSUFFICIENT_BUFFER)
     {
-        psid = HeapAlloc(GetProcessHeap(), 0, sid_size);
-        domain = HeapAlloc(GetProcessHeap(), 0, domain_size);
+        psid = malloc(sid_size);
+        domain = malloc(domain_size);
         ret = LookupAccountNameA(NULL, computer_name, psid, &sid_size, domain, &domain_size, &sid_use);
         ok(ret, "LookupAccountNameA failed: %ld\n", GetLastError());
         ok(sid_use == SidTypeDomain ||
            (sid_use == SidTypeUser && ! strcmp(computer_name, user_name)), "expected SidTypeDomain for %s, got %d\n", computer_name, sid_use);
-        HeapFree(GetProcessHeap(), 0, domain);
-        HeapFree(GetProcessHeap(), 0, psid);
+        free(domain);
+        free(psid);
     }
 
     /* Well Known names */
@@ -2876,7 +2876,7 @@ static void test_security_descriptor(void)
                          &size_group);
     ok(!ret && GetLastError() == ERROR_INSUFFICIENT_BUFFER, "got %lu\n", GetLastError());
 
-    sd_abs = HeapAlloc(GetProcessHeap(), 0, size + size_dacl + size_sacl + size_owner + size_group);
+    sd_abs = malloc(size + size_dacl + size_sacl + size_owner + size_group);
     dacl = (PACL)(sd_abs + 1);
     sacl = (PACL)((char *)dacl + size_dacl);
     owner = (PSID)((char *)sacl + size_sacl);
@@ -2891,13 +2891,13 @@ static void test_security_descriptor(void)
     ok(size == 184, "got %lu\n", size);
 
     size += 4;
-    sd_rel2 = HeapAlloc(GetProcessHeap(), 0, size);
+    sd_rel2 = malloc(size);
     ret = MakeSelfRelativeSD(sd_abs, sd_rel2, &size);
     ok(ret, "got %lu\n", GetLastError());
     ok(size == 188, "got %lu\n", size);
 
-    HeapFree(GetProcessHeap(), 0, sd_abs);
-    HeapFree(GetProcessHeap(), 0, sd_rel2);
+    free(sd_abs);
+    free(sd_rel2);
     LocalFree(sd_rel);
 }
 
@@ -2960,12 +2960,12 @@ static void test_process_security(void)
     PSID EveryoneSid = NULL;
     SID_NAME_USE use;
 
-    Acl = HeapAlloc(GetProcessHeap(), 0, 256);
+    Acl = malloc(256);
     res = InitializeAcl(Acl, 256, ACL_REVISION);
     if (!res && GetLastError() == ERROR_CALL_NOT_IMPLEMENTED)
     {
         win_skip("ACLs not implemented - skipping tests\n");
-        HeapFree(GetProcessHeap(), 0, Acl);
+        free(Acl);
         return;
     }
     ok(res, "InitializeAcl failed with error %ld\n", GetLastError());
@@ -2978,7 +2978,7 @@ static void test_process_security(void)
     ok(res, "OpenProcessToken failed with error %ld\n", GetLastError());
     if (!res)
     {
-        HeapFree(GetProcessHeap(), 0, Acl);
+        free(Acl);
         return;
     }
 
@@ -2987,7 +2987,7 @@ static void test_process_security(void)
     ok(GetLastError() == ERROR_INSUFFICIENT_BUFFER,
        "Expected ERROR_INSUFFICIENT_BUFFER, got %ld\n", GetLastError());
 
-    owner = HeapAlloc(GetProcessHeap(), 0, size);
+    owner = malloc(size);
     res = GetTokenInformation( token, TokenOwner, owner, size, &size );
     ok(res, "GetTokenInformation failed with error %ld\n", GetLastError());
     AdminSid = owner->Owner;
@@ -2998,7 +2998,7 @@ static void test_process_security(void)
     ok(GetLastError() == ERROR_INSUFFICIENT_BUFFER,
        "Expected ERROR_INSUFFICIENT_BUFFER, got %ld\n", GetLastError());
 
-    group = HeapAlloc(GetProcessHeap(), 0, size);
+    group = malloc(size);
     res = GetTokenInformation( token, TokenPrimaryGroup, group, size, &size );
     ok(res, "GetTokenInformation failed with error %ld\n", GetLastError());
     UsersSid = group->PrimaryGroup;
@@ -3019,7 +3019,7 @@ static void test_process_security(void)
     ok(GetLastError() == ERROR_INSUFFICIENT_BUFFER,
        "Expected ERROR_INSUFFICIENT_BUFFER, got %ld\n", GetLastError());
 
-    user = HeapAlloc(GetProcessHeap(), 0, size);
+    user = malloc(size);
     res = GetTokenInformation( token, TokenUser, user, size, &size );
     ok(res, "GetTokenInformation failed with error %ld\n", GetLastError());
     UserSid = user->User.Sid;
@@ -3029,10 +3029,10 @@ static void test_process_security(void)
     CloseHandle( token );
     if (!res)
     {
-        HeapFree(GetProcessHeap(), 0, group);
-        HeapFree(GetProcessHeap(), 0, owner);
-        HeapFree(GetProcessHeap(), 0, user);
-        HeapFree(GetProcessHeap(), 0, Acl);
+        free(group);
+        free(owner);
+        free(user);
+        free(Acl);
         return;
     }
 
@@ -3041,7 +3041,7 @@ static void test_process_security(void)
     res = AddAccessAllowedAce(Acl, ACL_REVISION, PROCESS_ALL_ACCESS, AdminSid);
     ok(res, "AddAccessAllowedAce failed with error %ld\n", GetLastError());
 
-    SecurityDescriptor = HeapAlloc(GetProcessHeap(), 0, SECURITY_DESCRIPTOR_MIN_LENGTH);
+    SecurityDescriptor = malloc(SECURITY_DESCRIPTOR_MIN_LENGTH);
     res = InitializeSecurityDescriptor(SecurityDescriptor, SECURITY_DESCRIPTOR_REVISION);
     ok(res, "InitializeSecurityDescriptor failed with error %ld\n", GetLastError());
 
@@ -3100,11 +3100,11 @@ static void test_process_security(void)
     psa.lpSecurityDescriptor = SecurityDescriptor;
     psa.bInheritHandle = TRUE;
 
-    ThreadSecurityDescriptor = HeapAlloc( GetProcessHeap(), 0, SECURITY_DESCRIPTOR_MIN_LENGTH );
+    ThreadSecurityDescriptor = malloc( SECURITY_DESCRIPTOR_MIN_LENGTH );
     res = InitializeSecurityDescriptor( ThreadSecurityDescriptor, SECURITY_DESCRIPTOR_REVISION );
     ok(res, "InitializeSecurityDescriptor failed with error %ld\n", GetLastError());
 
-    ThreadAcl = HeapAlloc( GetProcessHeap(), 0, 256 );
+    ThreadAcl = malloc( 256 );
     res = InitializeAcl( ThreadAcl, 256, ACL_REVISION );
     ok(res, "InitializeAcl failed with error %ld\n", GetLastError());
     res = AddAccessDeniedAce( ThreadAcl, ACL_REVISION, THREAD_SET_THREAD_TOKEN, AdminSid );
@@ -3136,13 +3136,13 @@ static void test_process_security(void)
     CloseHandle( info.hProcess );
     CloseHandle( info.hThread );
     CloseHandle( event );
-    HeapFree(GetProcessHeap(), 0, group);
-    HeapFree(GetProcessHeap(), 0, owner);
-    HeapFree(GetProcessHeap(), 0, user);
-    HeapFree(GetProcessHeap(), 0, Acl);
-    HeapFree(GetProcessHeap(), 0, SecurityDescriptor);
-    HeapFree(GetProcessHeap(), 0, ThreadAcl);
-    HeapFree(GetProcessHeap(), 0, ThreadSecurityDescriptor);
+    free(group);
+    free(owner);
+    free(user);
+    free(Acl);
+    free(SecurityDescriptor);
+    free(ThreadAcl);
+    free(ThreadSecurityDescriptor);
 }
 
 static void test_process_security_child(void)
@@ -3262,24 +3262,24 @@ static void test_impersonation_level(void)
     ret = GetTokenInformation(Token, TokenUser, NULL, 0, &Size);
     error = GetLastError();
     ok(!ret && error == ERROR_INSUFFICIENT_BUFFER, "GetTokenInformation(TokenUser) should have failed with ERROR_INSUFFICIENT_BUFFER instead of %ld\n", error);
-    User = HeapAlloc(GetProcessHeap(), 0, Size);
+    User = malloc(Size);
     ret = GetTokenInformation(Token, TokenUser, User, Size, &Size);
     ok(ret, "GetTokenInformation(TokenUser) failed with error %ld\n", GetLastError());
-    HeapFree(GetProcessHeap(), 0, User);
+    free(User);
 
     /* PrivilegeCheck fails with SecurityAnonymous level */
     ret = GetTokenInformation(Token, TokenPrivileges, NULL, 0, &Size);
     error = GetLastError();
     ok(!ret && error == ERROR_INSUFFICIENT_BUFFER, "GetTokenInformation(TokenPrivileges) should have failed with ERROR_INSUFFICIENT_BUFFER instead of %ld\n", error);
-    Privileges = HeapAlloc(GetProcessHeap(), 0, Size);
+    Privileges = malloc(Size);
     ret = GetTokenInformation(Token, TokenPrivileges, Privileges, Size, &Size);
     ok(ret, "GetTokenInformation(TokenPrivileges) failed with error %ld\n", GetLastError());
 
-    PrivilegeSet = HeapAlloc(GetProcessHeap(), 0, FIELD_OFFSET(PRIVILEGE_SET, Privilege[Privileges->PrivilegeCount]));
+    PrivilegeSet = malloc(FIELD_OFFSET(PRIVILEGE_SET, Privilege[Privileges->PrivilegeCount]));
     PrivilegeSet->PrivilegeCount = Privileges->PrivilegeCount;
     memcpy(PrivilegeSet->Privilege, Privileges->Privileges, PrivilegeSet->PrivilegeCount * sizeof(PrivilegeSet->Privilege[0]));
     PrivilegeSet->Control = PRIVILEGE_SET_ALL_NECESSARY;
-    HeapFree(GetProcessHeap(), 0, Privileges);
+    free(Privileges);
 
     ret = PrivilegeCheck(Token, PrivilegeSet, &AccessGranted);
     error = GetLastError();
@@ -3317,7 +3317,7 @@ static void test_impersonation_level(void)
     CloseHandle(Token);
     CloseHandle(ProcessToken);
 
-    HeapFree(GetProcessHeap(), 0, PrivilegeSet);
+    free(PrivilegeSet);
 }
 
 static void test_SetEntriesInAclW(void)
@@ -3350,12 +3350,12 @@ static void test_SetEntriesInAclW(void)
         "NewAcl=%p, expected NULL\n", NewAcl);
     LocalFree(NewAcl);
 
-    OldAcl = HeapAlloc(GetProcessHeap(), 0, 256);
+    OldAcl = malloc(256);
     res = InitializeAcl(OldAcl, 256, ACL_REVISION);
     if(!res && GetLastError() == ERROR_CALL_NOT_IMPLEMENTED)
     {
         win_skip("ACLs not implemented - skipping tests\n");
-        HeapFree(GetProcessHeap(), 0, OldAcl);
+        free(OldAcl);
         return;
     }
     ok(res, "InitializeAcl failed with error %ld\n", GetLastError());
@@ -3448,7 +3448,7 @@ static void test_SetEntriesInAclW(void)
 
     FreeSid(UsersSid);
     FreeSid(EveryoneSid);
-    HeapFree(GetProcessHeap(), 0, OldAcl);
+    free(OldAcl);
 }
 
 static void test_SetEntriesInAclA(void)
@@ -3475,12 +3475,12 @@ static void test_SetEntriesInAclA(void)
         "NewAcl=%p, expected NULL\n", NewAcl);
     LocalFree(NewAcl);
 
-    OldAcl = HeapAlloc(GetProcessHeap(), 0, 256);
+    OldAcl = malloc(256);
     res = InitializeAcl(OldAcl, 256, ACL_REVISION);
     if(!res && GetLastError() == ERROR_CALL_NOT_IMPLEMENTED)
     {
         win_skip("ACLs not implemented - skipping tests\n");
-        HeapFree(GetProcessHeap(), 0, OldAcl);
+        free(OldAcl);
         return;
     }
     ok(res, "InitializeAcl failed with error %ld\n", GetLastError());
@@ -3573,7 +3573,7 @@ static void test_SetEntriesInAclA(void)
 
     FreeSid(UsersSid);
     FreeSid(EveryoneSid);
-    HeapFree(GetProcessHeap(), 0, OldAcl);
+    free(OldAcl);
 }
 
 /* helper function for test_CreateDirectoryA */
@@ -3688,7 +3688,7 @@ static void test_CreateDirectoryA(void)
     bret = GetTokenInformation(token, TokenUser, NULL, 0, &user_size);
     ok(!bret && (GetLastError() == ERROR_INSUFFICIENT_BUFFER),
         "GetTokenInformation(TokenUser) failed with error %ld\n", GetLastError());
-    user = HeapAlloc(GetProcessHeap(), 0, user_size);
+    user = malloc(user_size);
     bret = GetTokenInformation(token, TokenUser, user, user_size, &user_size);
     ok(bret, "GetTokenInformation(TokenUser) failed with error %ld\n", GetLastError());
     CloseHandle( token );
@@ -3699,7 +3699,7 @@ static void test_CreateDirectoryA(void)
     sa.bInheritHandle = TRUE;
     InitializeSecurityDescriptor(pSD, SECURITY_DESCRIPTOR_REVISION);
     CreateWellKnownSid(WinBuiltinAdministratorsSid, NULL, admin_sid, &sid_size);
-    pDacl = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, 100);
+    pDacl = calloc(1, 100);
     bret = InitializeAcl(pDacl, 100, ACL_REVISION);
     ok(bret, "Failed to initialize ACL.\n");
     bret = pAddAccessAllowedAceEx(pDacl, ACL_REVISION, OBJECT_INHERIT_ACE|CONTAINER_INHERIT_ACE,
@@ -3715,7 +3715,7 @@ static void test_CreateDirectoryA(void)
     lstrcatA(tmpdir, "Please Remove Me");
     bret = CreateDirectoryA(tmpdir, &sa);
     ok(bret == TRUE, "CreateDirectoryA(%s) failed err=%ld\n", tmpdir, GetLastError());
-    HeapFree(GetProcessHeap(), 0, pDacl);
+    free(pDacl);
 
     SetLastError(0xdeadbeef);
     error = pGetNamedSecurityInfoA(tmpdir, SE_FILE_OBJECT,
@@ -3752,7 +3752,7 @@ static void test_CreateDirectoryA(void)
      * When a security descriptor is set, then inheritance doesn't take effect */
     pSD = &sd;
     InitializeSecurityDescriptor(pSD, SECURITY_DESCRIPTOR_REVISION);
-    pDacl = HeapAlloc(GetProcessHeap(), 0, sizeof(ACL));
+    pDacl = malloc(sizeof(ACL));
     bret = InitializeAcl(pDacl, sizeof(ACL), ACL_REVISION);
     ok(bret, "Failed to initialize ACL\n");
     bret = SetSecurityDescriptorDacl(pSD, TRUE, pDacl, FALSE);
@@ -3767,7 +3767,7 @@ static void test_CreateDirectoryA(void)
     hTemp = CreateFileA(tmpfile, GENERIC_WRITE, FILE_SHARE_READ, &sa,
                         CREATE_NEW, FILE_FLAG_DELETE_ON_CLOSE, NULL);
     ok(hTemp != INVALID_HANDLE_VALUE, "CreateFile error %lu\n", GetLastError());
-    HeapFree(GetProcessHeap(), 0, pDacl);
+    free(pDacl);
 
     error = GetSecurityInfo(hTemp, SE_FILE_OBJECT, OWNER_SECURITY_INFORMATION | DACL_SECURITY_INFORMATION,
             (PSID *)&owner, NULL, &pDacl, NULL, &pSD);
@@ -3825,7 +3825,7 @@ static void test_CreateDirectoryA(void)
      * When a security descriptor is set, then inheritance doesn't take effect */
     pSD = &sd;
     InitializeSecurityDescriptor(pSD, SECURITY_DESCRIPTOR_REVISION);
-    pDacl = HeapAlloc(GetProcessHeap(), 0, sizeof(ACL));
+    pDacl = malloc(sizeof(ACL));
     bret = InitializeAcl(pDacl, sizeof(ACL), ACL_REVISION);
     ok(bret, "Failed to initialize ACL\n");
     bret = SetSecurityDescriptorDacl(pSD, TRUE, pDacl, FALSE);
@@ -3846,7 +3846,7 @@ static void test_CreateDirectoryA(void)
                            FILE_SHARE_READ, FILE_CREATE, FILE_DELETE_ON_CLOSE, NULL, 0);
     ok(!status, "NtCreateFile failed with %08lx\n", status);
     pRtlFreeUnicodeString(&tmpfileW);
-    HeapFree(GetProcessHeap(), 0, pDacl);
+    free(pDacl);
 
     error = GetSecurityInfo(hTemp, SE_FILE_OBJECT, OWNER_SECURITY_INFORMATION | DACL_SECURITY_INFORMATION,
             (PSID *)&owner, NULL, &pDacl, NULL, &pSD);
@@ -3875,7 +3875,7 @@ static void test_CreateDirectoryA(void)
     CloseHandle(hTemp);
 
 done:
-    HeapFree(GetProcessHeap(), 0, user);
+    free(user);
     bret = RemoveDirectoryA(tmpdir);
     ok(bret == TRUE, "RemoveDirectoryA should always succeed\n");
 }
@@ -3930,7 +3930,7 @@ static void test_GetNamedSecurityInfoA(void)
     bret = GetTokenInformation(token, TokenUser, NULL, 0, &user_size);
     ok(!bret && (GetLastError() == ERROR_INSUFFICIENT_BUFFER),
         "GetTokenInformation(TokenUser) failed with error %ld\n", GetLastError());
-    user = HeapAlloc(GetProcessHeap(), 0, user_size);
+    user = malloc(user_size);
     bret = GetTokenInformation(token, TokenUser, user, user_size, &user_size);
     ok(bret, "GetTokenInformation(TokenUser) failed with error %ld\n", GetLastError());
     CloseHandle( token );
@@ -3946,7 +3946,7 @@ static void test_GetNamedSecurityInfoA(void)
     if (error != ERROR_SUCCESS && (GetLastError() == ERROR_CALL_NOT_IMPLEMENTED))
     {
         win_skip("GetNamedSecurityInfoA is not implemented\n");
-        HeapFree(GetProcessHeap(), 0, user);
+        free(user);
         return;
     }
     ok(!error, "GetNamedSecurityInfo failed with error %ld\n", error);
@@ -3974,7 +3974,7 @@ static void test_GetNamedSecurityInfoA(void)
     if(isNT4)
     {
         win_skip("NT4 does not support GetNamedSecutityInfo with a NULL descriptor\n");
-        HeapFree(GetProcessHeap(), 0, user);
+        free(user);
         return;
     }
 
@@ -4002,7 +4002,7 @@ static void test_GetNamedSecurityInfoA(void)
 
     /* Create security descriptor information and test that it comes back the same */
     pSD = &sd;
-    pDacl = HeapAlloc(GetProcessHeap(), 0, 100);
+    pDacl = malloc(100);
     InitializeSecurityDescriptor(pSD, SECURITY_DESCRIPTOR_REVISION);
     CreateWellKnownSid(WinBuiltinAdministratorsSid, NULL, admin_sid, &sid_size);
     bret = InitializeAcl(pDacl, 100, ACL_REVISION);
@@ -4019,11 +4019,11 @@ static void test_GetNamedSecurityInfoA(void)
     SetLastError(0xdeadbeef);
     error = pSetNamedSecurityInfoA(tmpfile, SE_FILE_OBJECT, DACL_SECURITY_INFORMATION, NULL,
                                    NULL, pDacl, NULL);
-    HeapFree(GetProcessHeap(), 0, pDacl);
+    free(pDacl);
     if (error != ERROR_SUCCESS && (GetLastError() == ERROR_CALL_NOT_IMPLEMENTED))
     {
         win_skip("SetNamedSecurityInfoA is not implemented\n");
-        HeapFree(GetProcessHeap(), 0, user);
+        free(user);
         CloseHandle(hTemp);
         return;
     }
@@ -4034,7 +4034,7 @@ static void test_GetNamedSecurityInfoA(void)
     if (error != ERROR_SUCCESS && (GetLastError() == ERROR_CALL_NOT_IMPLEMENTED))
     {
         win_skip("GetNamedSecurityInfoA is not implemented\n");
-        HeapFree(GetProcessHeap(), 0, user);
+        free(user);
         CloseHandle(hTemp);
         return;
     }
@@ -4070,13 +4070,13 @@ static void test_GetNamedSecurityInfoA(void)
     LocalFree(pSD);
 
     /* show that setting empty DACL is not removing all file permissions */
-    pDacl = HeapAlloc(GetProcessHeap(), 0, sizeof(ACL));
+    pDacl = malloc(sizeof(ACL));
     bret = InitializeAcl(pDacl, sizeof(ACL), ACL_REVISION);
     ok(bret, "Failed to initialize ACL.\n");
     error =  pSetNamedSecurityInfoA(tmpfile, SE_FILE_OBJECT, DACL_SECURITY_INFORMATION,
             NULL, NULL, pDacl, NULL);
     ok(!error, "SetNamedSecurityInfoA failed with error %ld\n", error);
-    HeapFree(GetProcessHeap(), 0, pDacl);
+    free(pDacl);
 
     error = pGetNamedSecurityInfoA(tmpfile, SE_FILE_OBJECT, DACL_SECURITY_INFORMATION,
             NULL, NULL, &pDacl, NULL, &pSD);
@@ -4117,7 +4117,7 @@ static void test_GetNamedSecurityInfoA(void)
     /* NtSetSecurityObject doesn't inherit DACL entries */
     pSD = sd+sizeof(void*)-((ULONG_PTR)sd)%sizeof(void*);
     InitializeSecurityDescriptor(pSD, SECURITY_DESCRIPTOR_REVISION);
-    pDacl = HeapAlloc(GetProcessHeap(), 0, 100);
+    pDacl = malloc(100);
     bret = InitializeAcl(pDacl, sizeof(ACL), ACL_REVISION);
     ok(bret, "Failed to initialize ACL.\n");
     bret = SetSecurityDescriptorDacl(pSD, TRUE, pDacl, FALSE);
@@ -4180,8 +4180,8 @@ static void test_GetNamedSecurityInfoA(void)
     h = CreateFileA(tmpfile, GENERIC_READ, FILE_SHARE_DELETE|FILE_SHARE_WRITE|FILE_SHARE_READ,
             NULL, OPEN_EXISTING, 0, NULL);
     ok(h == INVALID_HANDLE_VALUE, "CreateFile error %ld\n", GetLastError());
-    HeapFree(GetProcessHeap(), 0, pDacl);
-    HeapFree(GetProcessHeap(), 0, user);
+    free(pDacl);
+    free(user);
     CloseHandle(hTemp);
 
     /* Test querying the ownership of a built-in registry key */
@@ -4672,7 +4672,7 @@ static void test_PrivateObjectSecurity(void)
         "G:S-1-5-21-93476-23408-4576"
         "D:(A;NP;GAGXGWGR;;;SU)(A;IOID;CCDC;;;SU)(D;OICI;0xffffffff;;;S-1-5-21-93476-23408-4576)"
         "S:(AU;OICINPIOIDSAFA;CCDCLCSWRPRC;;;SU)(AU;NPSA;0x12019f;;;SU)", SDDL_REVISION_1, &sec, &dwDescSize), "Creating descriptor failed\n");
-    buf = HeapAlloc(GetProcessHeap(), 0, dwDescSize);
+    buf = malloc(dwDescSize);
     pSetSecurityDescriptorControl(sec, SE_DACL_PROTECTED, SE_DACL_PROTECTED);
     GetSecurityDescriptorControl(sec, &ctrl, &dwRevision);
     expect_eq(ctrl, 0x9014, int, "%x");
@@ -4715,7 +4715,7 @@ static void test_PrivateObjectSecurity(void)
     ok(GetLastError() == ERROR_INSUFFICIENT_BUFFER, "Expected error ERROR_INSUFFICIENT_BUFFER, got %lu\n", GetLastError());
 
     LocalFree(sec);
-    HeapFree(GetProcessHeap(), 0, buf);
+    free(buf);
 }
 #undef CHECK_RESULT_AND_FREE
 #undef CHECK_ONE_OF_AND_FREE
@@ -5127,7 +5127,7 @@ static void test_CheckTokenMembership(void)
     ok(!ret && GetLastError() == ERROR_INSUFFICIENT_BUFFER,
         "GetTokenInformation(TokenGroups) %s with error %ld\n",
         ret ? "succeeded" : "failed", GetLastError());
-    token_groups = HeapAlloc(GetProcessHeap(), 0, size);
+    token_groups = malloc(size);
     ret = GetTokenInformation(token, TokenGroups, token_groups, size, &size);
     ok(ret, "GetTokenInformation(TokenGroups) failed with error %ld\n", GetLastError());
 
@@ -5139,7 +5139,7 @@ static void test_CheckTokenMembership(void)
 
     if (i == token_groups->GroupCount)
     {
-        HeapFree(GetProcessHeap(), 0, token_groups);
+        free(token_groups);
         CloseHandle(token);
         skip("user not a member of any group\n");
         return;
@@ -5163,7 +5163,7 @@ static void test_CheckTokenMembership(void)
         ret ? "succeeded" : "failed", GetLastError());
     ok(!is_member, "CheckTokenMembership should have cleared is_member\n");
 
-    HeapFree(GetProcessHeap(), 0, token_groups);
+    free(token_groups);
     CloseHandle(token);
     CloseHandle(process_token);
 }
@@ -5407,7 +5407,7 @@ static void test_CreateRestrictedToken(void)
     ret = GetTokenInformation(token, TokenGroups, NULL, 0, &size);
     ok(!ret && GetLastError() == ERROR_INSUFFICIENT_BUFFER,
         "got %d with error %ld\n", ret, GetLastError());
-    token_groups = HeapAlloc(GetProcessHeap(), 0, size);
+    token_groups = malloc(size);
     ret = GetTokenInformation(token, TokenGroups, token_groups, size, &size);
     ok(ret, "got error %ld\n", GetLastError());
 
@@ -5440,7 +5440,7 @@ static void test_CreateRestrictedToken(void)
     ret = GetTokenInformation(r_token, TokenGroups, NULL, 0, &size);
     ok(!ret && GetLastError() == ERROR_INSUFFICIENT_BUFFER, "got %d with error %ld\n",
         ret, GetLastError());
-    groups2 = HeapAlloc(GetProcessHeap(), 0, size);
+    groups2 = malloc(size);
     ret = GetTokenInformation(r_token, TokenGroups, groups2, size, &size);
     ok(ret, "got error %ld\n", GetLastError());
 
@@ -5455,7 +5455,7 @@ static void test_CreateRestrictedToken(void)
         }
     }
 
-    HeapFree(GetProcessHeap(), 0, groups2);
+    free(groups2);
 
     size = sizeof(type);
     ret = GetTokenInformation(r_token, TokenType, &type, size, &size);
@@ -5527,7 +5527,7 @@ static void test_CreateRestrictedToken(void)
     ok(ret, "got error %lu\n", GetLastError());
     CloseHandle(r_token);
 
-    HeapFree(GetProcessHeap(), 0, token_groups);
+    free(token_groups);
     CloseHandle(token);
     CloseHandle(process_token);
 }
@@ -5642,7 +5642,7 @@ todo_wine {
     ok(status == 1, "expected 1, got %d\n", status);
     ok(granted == mapping->GenericExecute, "expected execute access %#lx, got %#lx\n", mapping->GenericExecute, granted);
 }
-    HeapFree(GetProcessHeap(), 0, sd);
+    free(sd);
 }
 
 static ACCESS_MASK get_obj_access(HANDLE obj)
@@ -6489,7 +6489,7 @@ static void test_default_dacl_owner_group_sid(void)
 
     CloseHandle( token );
 
-    sd = HeapAlloc( GetProcessHeap(), 0, SECURITY_DESCRIPTOR_MIN_LENGTH );
+    sd = malloc( SECURITY_DESCRIPTOR_MIN_LENGTH );
     ret = InitializeSecurityDescriptor( sd, SECURITY_DESCRIPTOR_REVISION );
     ok( ret, "error %lu\n", GetLastError() );
 
@@ -6503,7 +6503,7 @@ static void test_default_dacl_owner_group_sid(void)
     ret = GetKernelObjectSecurity( handle, OWNER_SECURITY_INFORMATION|GROUP_SECURITY_INFORMATION|DACL_SECURITY_INFORMATION, NULL, 0, &size );
     ok( !ret && GetLastError() == ERROR_INSUFFICIENT_BUFFER, "error %lu\n", GetLastError() );
 
-    sd = HeapAlloc( GetProcessHeap(), 0, size );
+    sd = malloc( size );
     ret = GetKernelObjectSecurity( handle, OWNER_SECURITY_INFORMATION|GROUP_SECURITY_INFORMATION|DACL_SECURITY_INFORMATION, sd, size, &size );
     ok( ret, "error %lu\n", GetLastError() );
 
@@ -6555,13 +6555,13 @@ static void test_default_dacl_owner_group_sid(void)
         ok( !found, "DACL shall not reference token user if it is different from token owner\n" );
     }
 
-    HeapFree( GetProcessHeap(), 0, sa.lpSecurityDescriptor );
-    HeapFree( GetProcessHeap(), 0, sd );
+    free( sa.lpSecurityDescriptor );
+    free( sd );
     CloseHandle( handle );
 
-    HeapFree( GetProcessHeap(), 0, token_primary_group );
-    HeapFree( GetProcessHeap(), 0, token_owner );
-    HeapFree( GetProcessHeap(), 0, token_user );
+    free( token_primary_group );
+    free( token_owner );
+    free( token_user );
 }
 
 static void test_AdjustTokenPrivileges(void)
@@ -6685,7 +6685,7 @@ static void test_AddMandatoryAce(void)
     ok(!ret && GetLastError() == ERROR_INSUFFICIENT_BUFFER,
        "Unexpected GetKernelObjectSecurity return value %u, error %lu\n", ret, GetLastError());
 
-    sd2 = HeapAlloc(GetProcessHeap(), 0, size);
+    sd2 = malloc(size);
     ret = GetKernelObjectSecurity(handle, LABEL_SECURITY_INFORMATION, sd2, size, &size);
     ok(ret, "GetKernelObjectSecurity failed with error %lu\n", GetLastError());
 
@@ -6696,7 +6696,7 @@ static void test_AddMandatoryAce(void)
     ok(!present, "SACL is present\n");
     ok(sacl == (void *)0xdeadbeef, "SACL is set\n");
 
-    HeapFree(GetProcessHeap(), 0, sd2);
+    free(sd2);
     CloseHandle(handle);
 
     memset(buffer_acl, 0, sizeof(buffer_acl));
@@ -6734,7 +6734,7 @@ static void test_AddMandatoryAce(void)
     ok(!ret && GetLastError() == ERROR_INSUFFICIENT_BUFFER,
        "Unexpected GetKernelObjectSecurity return value %u, error %lu\n", ret, GetLastError());
 
-    sd2 = HeapAlloc(GetProcessHeap(), 0, size);
+    sd2 = malloc(size);
     ret = GetKernelObjectSecurity(handle, LABEL_SECURITY_INFORMATION, sd2, size, &size);
     ok(ret, "GetKernelObjectSecurity failed with error %lu\n", GetLastError());
 
@@ -6757,7 +6757,7 @@ static void test_AddMandatoryAce(void)
     ok(ace->Mask == SYSTEM_MANDATORY_LABEL_NO_WRITE_UP, "Unexpected ACE mask %#lx\n", ace->Mask);
     ok(EqualSid(&ace->SidStart, &low_level), "Expected low integrity level\n");
 
-    HeapFree(GetProcessHeap(), 0, sd2);
+    free(sd2);
 
     ret = pAddMandatoryAce(acl, ACL_REVISION, 0, SYSTEM_MANDATORY_LABEL_NO_EXECUTE_UP, &medium_level);
     ok(ret, "AddMandatoryAce failed with error %lu\n", GetLastError());
@@ -6769,7 +6769,7 @@ static void test_AddMandatoryAce(void)
     ok(!ret && GetLastError() == ERROR_INSUFFICIENT_BUFFER,
        "Unexpected GetKernelObjectSecurity return value %u, error %lu\n", ret, GetLastError());
 
-    sd2 = HeapAlloc(GetProcessHeap(), 0, size);
+    sd2 = malloc(size);
     ret = GetKernelObjectSecurity(handle, LABEL_SECURITY_INFORMATION, sd2, size, &size);
     ok(ret, "GetKernelObjectSecurity failed with error %lu\n", GetLastError());
 
@@ -6802,7 +6802,7 @@ static void test_AddMandatoryAce(void)
     ok(!ret, "expected failure\n");
     ok(GetLastError() == ERROR_INVALID_PARAMETER, "got error %lu\n", GetLastError());
 
-    HeapFree(GetProcessHeap(), 0, sd2);
+    free(sd2);
 
     ret = SetSecurityDescriptorSacl(sd, FALSE, NULL, FALSE);
     ok(ret, "SetSecurityDescriptorSacl failed with error %lu\n", GetLastError());
@@ -6814,7 +6814,7 @@ static void test_AddMandatoryAce(void)
     ok(!ret && GetLastError() == ERROR_INSUFFICIENT_BUFFER,
        "Unexpected GetKernelObjectSecurity return value %d, error %lu\n", ret, GetLastError());
 
-    sd2 = HeapAlloc(GetProcessHeap(), 0, size);
+    sd2 = malloc(size);
     ret = GetKernelObjectSecurity(handle, LABEL_SECURITY_INFORMATION, sd2, size, &size);
     ok(ret, "GetKernelObjectSecurity failed with error %lu\n", GetLastError());
 
@@ -6828,7 +6828,7 @@ static void test_AddMandatoryAce(void)
     ok(!defaulted, "SACL defaulted\n");
     ok(!sacl->AceCount, "SACL contains an unexpected ACE count %u\n", sacl->AceCount);
 
-    HeapFree(GetProcessHeap(), 0, sd2);
+    free(sd2);
 
     ret = InitializeAcl(acl, 256, ACL_REVISION);
     ok(ret, "InitializeAcl failed with error %lu\n", GetLastError());
@@ -6846,7 +6846,7 @@ static void test_AddMandatoryAce(void)
     ok(!ret && GetLastError() == ERROR_INSUFFICIENT_BUFFER,
        "Unexpected GetKernelObjectSecurity return value %d, error %lu\n", ret, GetLastError());
 
-    sd2 = HeapAlloc(GetProcessHeap(), 0, size);
+    sd2 = malloc(size);
     ret = GetKernelObjectSecurity(handle, LABEL_SECURITY_INFORMATION, sd2, size, &size);
     ok(ret, "GetKernelObjectSecurity failed with error %lu\n", GetLastError());
 
@@ -6860,7 +6860,7 @@ static void test_AddMandatoryAce(void)
     ok(sacl->AclRevision == ACL_REVISION3, "Expected revision 3, got %d\n", sacl->AclRevision);
     ok(!defaulted, "SACL defaulted\n");
 
-    HeapFree(GetProcessHeap(), 0, sd2);
+    free(sd2);
 
     ret = InitializeAcl(acl, 256, ACL_REVISION);
     ok(ret, "InitializeAcl failed with error %lu\n", GetLastError());
@@ -6881,7 +6881,7 @@ static void test_AddMandatoryAce(void)
     ok(!ret && GetLastError() == ERROR_INSUFFICIENT_BUFFER,
        "Unexpected GetKernelObjectSecurity return value %d, error %lu\n", ret, GetLastError());
 
-    sd2 = HeapAlloc(GetProcessHeap(), 0, size);
+    sd2 = malloc(size);
     ret = GetKernelObjectSecurity(handle, LABEL_SECURITY_INFORMATION, sd2, size, &size);
     ok(ret, "GetKernelObjectSecurity failed with error %lu\n", GetLastError());
 
@@ -6896,7 +6896,7 @@ static void test_AddMandatoryAce(void)
     ok(!sacl->AceCount, "SACL contains an unexpected ACE count %u\n", sacl->AceCount);
 
     FreeSid(everyone);
-    HeapFree(GetProcessHeap(), 0, sd2);
+    free(sd2);
     CloseHandle(handle);
 }
 
@@ -6935,7 +6935,7 @@ static void test_system_security_access(void)
     priv.Privileges[0].Luid = luid;
     priv.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
 
-    priv_prev = HeapAlloc( GetProcessHeap(), 0, len );
+    priv_prev = malloc( len );
     ret = AdjustTokenPrivileges( token, FALSE, &priv, len, priv_prev, &len );
     ok( ret, "got %lu\n", GetLastError());
 
@@ -6943,7 +6943,7 @@ static void test_system_security_access(void)
     if (res == ERROR_PRIVILEGE_NOT_HELD)
     {
         win_skip( "privilege not held\n" );
-        HeapFree( GetProcessHeap(), 0, priv_prev );
+        free( priv_prev );
         CloseHandle( token );
         return;
     }
@@ -6952,7 +6952,7 @@ static void test_system_security_access(void)
     /* restore privileges */
     ret = AdjustTokenPrivileges( token, FALSE, priv_prev, 0, NULL, NULL );
     ok( ret, "got %lu\n", GetLastError() );
-    HeapFree( GetProcessHeap(), 0, priv_prev );
+    free( priv_prev );
 
     /* privilege is checked on access */
     err = GetSecurityInfo( hkey, SE_REGISTRY_KEY, SACL_SECURITY_INFORMATION, NULL, NULL, NULL, &sacl, &sd );
@@ -6964,7 +6964,7 @@ static void test_system_security_access(void)
     priv.Privileges[0].Luid = luid;
     priv.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
 
-    priv_prev = HeapAlloc( GetProcessHeap(), 0, len );
+    priv_prev = malloc( len );
     ret = AdjustTokenPrivileges( token, FALSE, &priv, len, priv_prev, &len );
     ok( ret, "got %lu\n", GetLastError());
 
@@ -6986,7 +6986,7 @@ static void test_system_security_access(void)
     /* restore privileges */
     ret = AdjustTokenPrivileges( token, FALSE, priv_prev, 0, NULL, NULL );
     ok( ret, "got %lu\n", GetLastError() );
-    HeapFree( GetProcessHeap(), 0, priv_prev );
+    free( priv_prev );
 
     /* handle created without ACCESS_SYSTEM_SECURITY, privilege not held */
     res = RegCreateKeyExW( HKEY_LOCAL_MACHINE, testkeyW, 0, NULL, 0, KEY_READ, NULL, &hkey, NULL );
@@ -7033,7 +7033,7 @@ static void test_GetWindowsAccountDomainSid(void)
     bret = GetTokenInformation(token, TokenUser, NULL, 0, &sid_size);
     ok(!bret && GetLastError() == ERROR_INSUFFICIENT_BUFFER,
        "GetTokenInformation(TokenUser) failed with error %ld\n", GetLastError());
-    user = HeapAlloc(GetProcessHeap(), 0, sid_size);
+    user = malloc(sid_size);
     bret = GetTokenInformation(token, TokenUser, user, sid_size, &sid_size);
     ok(bret, "GetTokenInformation(TokenUser) failed with error %ld\n", GetLastError());
     CloseHandle(token);
@@ -7078,7 +7078,7 @@ static void test_GetWindowsAccountDomainSid(void)
     ok(EqualSid(domain_sid, domain_sid2), "unexpected domain sid %s != %s\n",
        debugstr_sid(domain_sid), debugstr_sid(domain_sid2));
 
-    HeapFree(GetProcessHeap(), 0, user);
+    free(user);
 }
 
 static void test_GetSidIdentifierAuthority(void)
@@ -7227,7 +7227,7 @@ static void test_token_label(void)
     ok(!ret && GetLastError() == ERROR_INSUFFICIENT_BUFFER,
        "Unexpected GetKernelObjectSecurity return value %d, error %lu\n", ret, GetLastError());
 
-    sd = HeapAlloc(GetProcessHeap(), 0, size);
+    sd = malloc(size);
     ret = GetKernelObjectSecurity(token, LABEL_SECURITY_INFORMATION, sd, size, &size);
     ok(ret, "GetKernelObjectSecurity failed with error %lu\n", GetLastError());
 
@@ -7276,7 +7276,7 @@ static void test_token_label(void)
     ok(ret, "GetSecurityDescriptorDacl failed with error %lu\n", GetLastError());
     todo_wine ok(!present, "DACL present\n");
 
-    HeapFree(GetProcessHeap(), 0, sd);
+    free(sd);
     CloseHandle(token);
 }
 
@@ -7335,7 +7335,7 @@ static void test_token_security_descriptor(void)
     ok(!ret && GetLastError() == ERROR_INSUFFICIENT_BUFFER,
        "Unexpected GetKernelObjectSecurity return value %d, error %lu\n", ret, GetLastError());
 
-    sd2 = HeapAlloc(GetProcessHeap(), 0, size);
+    sd2 = malloc(size);
     ret = GetKernelObjectSecurity(token2, DACL_SECURITY_INFORMATION, sd2, size, &size);
     ok(ret, "GetKernelObjectSecurity failed with error %lu\n", GetLastError());
 
@@ -7356,7 +7356,7 @@ static void test_token_security_descriptor(void)
     ok(ace->Header.AceFlags == NO_PROPAGATE_INHERIT_ACE,
        "Expected NO_PROPAGATE_INHERIT_ACE as flags, got %x\n", ace->Header.AceFlags);
 
-    HeapFree(GetProcessHeap(), 0, sd2);
+    free(sd2);
 
     /* Duplicate token without security attributes.
      * Tokens do not inherit the security descriptor in DuplicateToken. */
@@ -7367,7 +7367,7 @@ static void test_token_security_descriptor(void)
     ok(!ret && GetLastError() == ERROR_INSUFFICIENT_BUFFER,
        "Unexpected GetKernelObjectSecurity return value %d, error %lu\n", ret, GetLastError());
 
-    sd2 = HeapAlloc(GetProcessHeap(), 0, size);
+    sd2 = malloc(size);
     ret = GetKernelObjectSecurity(token3, DACL_SECURITY_INFORMATION, sd2, size, &size);
     ok(ret, "GetKernelObjectSecurity failed with error %lu\n", GetLastError());
 
@@ -7394,7 +7394,7 @@ static void test_token_security_descriptor(void)
         ok(!found, "Access allowed ACE was inherited\n");
     }
 
-    HeapFree(GetProcessHeap(), 0, sd2);
+    free(sd2);
 
     /* When creating a child process, the process does inherit the token of
      * the parent but not the DACL of the token */
@@ -7402,7 +7402,7 @@ static void test_token_security_descriptor(void)
     ok(!ret && GetLastError() == ERROR_INSUFFICIENT_BUFFER,
        "Unexpected GetKernelObjectSecurity return value %d, error %lu\n", ret, GetLastError());
 
-    sd2 = HeapAlloc(GetProcessHeap(), 0, size);
+    sd2 = malloc(size);
     ret = GetKernelObjectSecurity(token, DACL_SECURITY_INFORMATION, sd2, size, &size);
     ok(ret, "GetKernelObjectSecurity failed with error %lu\n", GetLastError());
 
@@ -7473,7 +7473,7 @@ static void test_token_security_descriptor(void)
     CloseHandle(info.hThread);
 
     LocalFree(acl_child);
-    HeapFree(GetProcessHeap(), 0, sd2);
+    free(sd2);
     LocalFree(psid);
 
     CloseHandle(token3);
@@ -7504,7 +7504,7 @@ static void test_child_token_sd(void)
     ok(!ret && GetLastError() == ERROR_INSUFFICIENT_BUFFER,
        "Unexpected GetKernelObjectSecurity return value %d, error %lu\n", ret, GetLastError());
 
-    sd = HeapAlloc(GetProcessHeap(), 0, size);
+    sd = malloc(size);
     ret = GetKernelObjectSecurity(token, DACL_SECURITY_INFORMATION, sd, size, &size);
     ok(ret, "GetKernelObjectSecurity failed with error %lu\n", GetLastError());
 
@@ -7527,7 +7527,7 @@ static void test_child_token_sd(void)
     }
 
     LocalFree(psid);
-    HeapFree(GetProcessHeap(), 0, sd);
+    free(sd);
 
     if (!pAddMandatoryAce)
     {
@@ -7539,7 +7539,7 @@ static void test_child_token_sd(void)
     ok(!ret && GetLastError() == ERROR_INSUFFICIENT_BUFFER,
        "Unexpected GetKernelObjectSecurity return value %d, error %lu\n", ret, GetLastError());
 
-    sd = HeapAlloc(GetProcessHeap(), 0, size);
+    sd = malloc(size);
     ret = GetKernelObjectSecurity(token, LABEL_SECURITY_INFORMATION, sd, size, &size);
     ok(ret, "GetKernelObjectSecurity failed with error %lu\n", GetLastError());
 
@@ -7559,7 +7559,7 @@ static void test_child_token_sd(void)
     ok(!EqualSid(&ace_label->SidStart, &low_level),
        "Low integrity level should not have been inherited\n");
 
-    HeapFree(GetProcessHeap(), 0, sd);
+    free(sd);
 }
 
 static void test_GetExplicitEntriesFromAclW(void)
@@ -7586,12 +7586,12 @@ static void test_GetExplicitEntriesFromAclW(void)
         return;
     }
 
-    old_acl = HeapAlloc(GetProcessHeap(), 0, 256);
+    old_acl = malloc(256);
     res = InitializeAcl(old_acl, 256, ACL_REVISION);
     if(!res && GetLastError() == ERROR_CALL_NOT_IMPLEMENTED)
     {
         win_skip("ACLs not implemented - skipping tests\n");
-        HeapFree(GetProcessHeap(), 0, old_acl);
+        free(old_acl);
         return;
     }
     ok(res, "InitializeAcl failed with error %ld\n", GetLastError());
@@ -7724,7 +7724,7 @@ static void test_GetExplicitEntriesFromAclW(void)
 
     FreeSid(users_sid);
     FreeSid(everyone_sid);
-    HeapFree(GetProcessHeap(), 0, old_acl);
+    free(old_acl);
 }
 
 static void test_BuildSecurityDescriptorW(void)
diff --git a/dlls/advapi32/tests/service.c b/dlls/advapi32/tests/service.c
index 3fb1bda1d7d..f701197f372 100644
--- a/dlls/advapi32/tests/service.c
+++ b/dlls/advapi32/tests/service.c
@@ -1000,14 +1000,14 @@ static void test_query_svc(void)
     }
 
     /* Pass a correct buffer and buffersize but a NULL handle */
-    statusproc = HeapAlloc(GetProcessHeap(), 0, sizeof(SERVICE_STATUS_PROCESS));
+    statusproc = malloc(sizeof(SERVICE_STATUS_PROCESS));
     bufsize = needed;
     SetLastError(0xdeadbeef);
     ret = pQueryServiceStatusEx(NULL, SC_STATUS_PROCESS_INFO, (BYTE*)statusproc, bufsize, &needed);
     ok(!ret, "Expected failure\n");
     ok(GetLastError() == ERROR_INVALID_HANDLE,
        "Expected ERROR_INVALID_HANDLE, got %ld\n", GetLastError());
-    HeapFree(GetProcessHeap(), 0, statusproc);
+    free(statusproc);
 
     /* Correct handle and info level */
     SetLastError(0xdeadbeef);
@@ -1023,21 +1023,21 @@ static void test_query_svc(void)
     }
 
     /* All parameters are OK but we don't have enough rights */
-    statusproc = HeapAlloc(GetProcessHeap(), 0, sizeof(SERVICE_STATUS_PROCESS));
+    statusproc = malloc(sizeof(SERVICE_STATUS_PROCESS));
     bufsize = sizeof(SERVICE_STATUS_PROCESS);
     SetLastError(0xdeadbeef);
     ret = pQueryServiceStatusEx(svc_handle, SC_STATUS_PROCESS_INFO, (BYTE*)statusproc, bufsize, &needed);
     ok(!ret, "Expected failure\n");
     ok(GetLastError() == ERROR_ACCESS_DENIED,
        "Expected ERROR_ACCESS_DENIED, got %ld\n", GetLastError());
-    HeapFree(GetProcessHeap(), 0, statusproc);
+    free(statusproc);
 
     /* Open the service with just enough rights. */
     CloseServiceHandle(svc_handle);
     svc_handle = OpenServiceA(scm_handle, spooler, SERVICE_QUERY_STATUS);
 
     /* Everything should be fine now. */
-    statusproc = HeapAlloc(GetProcessHeap(), 0, sizeof(SERVICE_STATUS_PROCESS));
+    statusproc = malloc(sizeof(SERVICE_STATUS_PROCESS));
     bufsize = sizeof(SERVICE_STATUS_PROCESS);
     SetLastError(0xdeadbeef);
     ret = pQueryServiceStatusEx(svc_handle, SC_STATUS_PROCESS_INFO, (BYTE*)statusproc, bufsize, &needed);
@@ -1056,7 +1056,7 @@ static void test_query_svc(void)
     ok(broken(GetLastError() == ERROR_INVALID_PARAMETER) /* NT4 */ ||
        GetLastError() == ERROR_INVALID_ADDRESS, "got %ld\n", GetLastError());
 
-    HeapFree(GetProcessHeap(), 0, statusproc);
+    free(statusproc);
 
     CloseServiceHandle(svc_handle);
     CloseServiceHandle(scm_handle);
@@ -1274,14 +1274,14 @@ static BOOL test_enum_svc(int attempt)
     tempneeded = needed;
 
     /* Allocate the correct needed bytes */
-    services = HeapAlloc(GetProcessHeap(), 0, needed);
+    services = malloc(needed);
     bufsize = needed;
     needed = 0xdeadbeef;
     returned = 0xdeadbeef;
     SetLastError(0xdeadbeef);
     ret = EnumServicesStatusW(scm_handle, SERVICE_WIN32, SERVICE_STATE_ALL,
                               services, bufsize, &needed, &returned, NULL);
-    HeapFree(GetProcessHeap(), 0, services);
+    free(services);
     if (!ret && GetLastError() == ERROR_MORE_DATA && attempt)
         goto retry; /* service start race condition */
     ok(ret, "Expected success, got error %lu\n", GetLastError());
@@ -1291,14 +1291,14 @@ static BOOL test_enum_svc(int attempt)
     /* Store the number of returned services */
     tempreturned = returned;
 
-    servicesA = HeapAlloc(GetProcessHeap(), 0, neededA);
+    servicesA = malloc(neededA);
     bufsize = neededA;
     neededA = 0xdeadbeef;
     returnedA = 0xdeadbeef;
     SetLastError(0xdeadbeef);
     ret = EnumServicesStatusA(scm_handle, SERVICE_WIN32, SERVICE_STATE_ALL,
                               servicesA, bufsize, &neededA, &returnedA, NULL);
-    HeapFree(GetProcessHeap(), 0, servicesA);
+    free(servicesA);
     if (!ret && GetLastError() == ERROR_MORE_DATA && attempt)
         goto retry; /* service start race condition */
     if (!ret && GetLastError() == ERROR_NOT_ENOUGH_MEMORY && GetACP() == CP_UTF8)
@@ -1314,7 +1314,7 @@ static BOOL test_enum_svc(int attempt)
      * More than one service will be missing because of the space needed for
      * the strings.
      */
-    services = HeapAlloc(GetProcessHeap(), 0, tempneeded);
+    services = malloc(tempneeded);
     bufsize = (tempreturned - 1) * sizeof(ENUM_SERVICE_STATUSW);
     needed = 0xdeadbeef;
     returned = 0xdeadbeef;
@@ -1323,7 +1323,7 @@ static BOOL test_enum_svc(int attempt)
                               services, bufsize, &needed, &returned, NULL);
     if (ret && needed == 0 && attempt)
     {
-        HeapFree(GetProcessHeap(), 0, services);
+        free(services);
         goto retry; /* service stop race condition */
     }
     ok(!ret, "Expected failure\n");
@@ -1346,7 +1346,7 @@ static BOOL test_enum_svc(int attempt)
                               services, bufsize, &needed, &returned, &resume);
     if (ret && needed == 0 && attempt)
     {
-        HeapFree(GetProcessHeap(), 0, services);
+        free(services);
         goto retry; /* service stop race condition */
     }
     ok(!ret, "Expected failure\n");
@@ -1365,7 +1365,7 @@ static BOOL test_enum_svc(int attempt)
     SetLastError(0xdeadbeef);
     ret = EnumServicesStatusW(scm_handle, SERVICE_WIN32, SERVICE_STATE_ALL,
                               services, bufsize, &needed, &returned, &resume);
-    HeapFree(GetProcessHeap(), 0, services);
+    free(services);
     if (!ret && GetLastError() == ERROR_MORE_DATA && attempt)
         goto retry; /* service start race condition */
     ok(ret, "Expected success, got error %lu\n", GetLastError());
@@ -1390,10 +1390,10 @@ static BOOL test_enum_svc(int attempt)
     /* Get the number of active win32 services */
     EnumServicesStatusW(scm_handle, SERVICE_WIN32, SERVICE_ACTIVE, NULL, 0,
                         &needed, &returned, NULL);
-    services = HeapAlloc(GetProcessHeap(), 0, needed);
+    services = malloc(needed);
     ret = EnumServicesStatusW(scm_handle, SERVICE_WIN32, SERVICE_ACTIVE,
                               services, needed, &needed, &returned, NULL);
-    HeapFree(GetProcessHeap(), 0, services);
+    free(services);
     if (!ret && GetLastError() == ERROR_MORE_DATA && attempt)
         goto retry; /* service start race condition */
 
@@ -1402,10 +1402,10 @@ static BOOL test_enum_svc(int attempt)
     /* Get the number of inactive win32 services */
     EnumServicesStatusW(scm_handle, SERVICE_WIN32, SERVICE_INACTIVE, NULL, 0,
                         &needed, &returned, NULL);
-    services = HeapAlloc(GetProcessHeap(), 0, needed);
+    services = malloc(needed);
     ret = EnumServicesStatusW(scm_handle, SERVICE_WIN32, SERVICE_INACTIVE,
                               services, needed, &needed, &returned, NULL);
-    HeapFree(GetProcessHeap(), 0, services);
+    free(services);
     if (!ret && GetLastError() == ERROR_MORE_DATA && attempt)
         goto retry; /* service start race condition */
 
@@ -1414,10 +1414,10 @@ static BOOL test_enum_svc(int attempt)
     /* Get the number of win32 services */
     EnumServicesStatusW(scm_handle, SERVICE_WIN32, SERVICE_STATE_ALL, NULL, 0,
                         &needed, &returned, NULL);
-    services = HeapAlloc(GetProcessHeap(), 0, needed);
+    services = malloc(needed);
     ret = EnumServicesStatusW(scm_handle, SERVICE_WIN32, SERVICE_STATE_ALL,
                               services, needed, &needed, &returned, NULL);
-    HeapFree(GetProcessHeap(), 0, services);
+    free(services);
     if (!ret && GetLastError() == ERROR_MORE_DATA && attempt)
         goto retry; /* service start race condition */
 
@@ -1435,7 +1435,7 @@ static BOOL test_enum_svc(int attempt)
      */
     EnumServicesStatusW(scm_handle, SERVICE_DRIVER | SERVICE_WIN32, SERVICE_STATE_ALL,
                         NULL, 0, &needed, &returned, NULL);
-    services = HeapAlloc(GetProcessHeap(), 0, needed);
+    services = malloc(needed);
     ret = EnumServicesStatusW(scm_handle, SERVICE_DRIVER | SERVICE_WIN32, SERVICE_STATE_ALL,
                               services, needed, &needed, &returned, NULL);
     if (!ret && GetLastError() == ERROR_MORE_DATA && attempt)
@@ -1482,7 +1482,7 @@ static BOOL test_enum_svc(int attempt)
             }
         }
     }
-    HeapFree(GetProcessHeap(), 0, services);
+    free(services);
 
     if ((servicecountactive || servicecountinactive) && attempt)
          goto retry; /* service start|stop race condition */
@@ -1695,11 +1695,11 @@ static BOOL test_enum_svc_ex(int attempt)
     /* Show the Ex call returns the same service count as the regular enum */
     EnumServicesStatusW(scm_handle, SERVICE_WIN32, SERVICE_STATE_ALL,
                         NULL, 0, &needed, &returned, NULL);
-    services = HeapAlloc(GetProcessHeap(), 0, needed);
+    services = malloc(needed);
     returned = 0xdeadbeef;
     ret = EnumServicesStatusW(scm_handle, SERVICE_WIN32, SERVICE_STATE_ALL,
                               services, needed, &needed, &returned, NULL);
-    HeapFree(GetProcessHeap(), 0, services);
+    free(services);
     if (!ret && GetLastError() == ERROR_MORE_DATA && attempt)
         goto retry; /* service start race condition */
     ok(ret, "Expected success, got error %lu\n", GetLastError());
@@ -1710,14 +1710,14 @@ static BOOL test_enum_svc_ex(int attempt)
     tempreturned = returned;
 
     /* Allocate the correct needed bytes */
-    exservices = HeapAlloc(GetProcessHeap(), 0, tempneeded);
+    exservices = malloc(tempneeded);
     bufsize = tempneeded;
     needed = 0xdeadbeef;
     returned = 0xdeadbeef;
     SetLastError(0xdeadbeef);
     ret = pEnumServicesStatusExW(scm_handle, 0, SERVICE_WIN32, SERVICE_STATE_ALL,
                                  (BYTE*)exservices, bufsize, &needed, &returned, NULL, NULL);
-    HeapFree(GetProcessHeap(), 0, exservices);
+    free(exservices);
     if (!ret && GetLastError() == ERROR_MORE_DATA && attempt)
         goto retry; /* service start race condition */
     ok(ret, "Expected success, got error %lu\n", GetLastError());
@@ -1731,7 +1731,7 @@ static BOOL test_enum_svc_ex(int attempt)
      * More than one service will be missing because of the space needed for
      * the strings.
      */
-    exservices = HeapAlloc(GetProcessHeap(), 0, tempneeded);
+    exservices = malloc(tempneeded);
     bufsize = (tempreturned - 1) * sizeof(ENUM_SERVICE_STATUSW);
     needed = 0xdeadbeef;
     returned = 0xdeadbeef;
@@ -1740,7 +1740,7 @@ static BOOL test_enum_svc_ex(int attempt)
                                  (BYTE*)exservices, bufsize, &needed, &returned, NULL, NULL);
     if (ret && needed == 0 && attempt)
     {
-        HeapFree(GetProcessHeap(), 0, exservices);
+        free(exservices);
         goto retry; /* service stop race condition */
     }
     ok(!ret, "Expected failure\n");
@@ -1763,7 +1763,7 @@ static BOOL test_enum_svc_ex(int attempt)
                                  (BYTE*)exservices, bufsize, &needed, &returned, &resume, NULL);
     if (ret && needed == 0 && attempt)
     {
-        HeapFree(GetProcessHeap(), 0, exservices);
+        free(exservices);
         goto retry; /* service stop race condition */
     }
     ok(!ret, "Expected failure\n");
@@ -1782,7 +1782,7 @@ static BOOL test_enum_svc_ex(int attempt)
     SetLastError(0xdeadbeef);
     ret = pEnumServicesStatusExW(scm_handle, 0, SERVICE_WIN32, SERVICE_STATE_ALL,
                                  (BYTE*)exservices, bufsize, &needed, &returned, &resume, NULL);
-    HeapFree(GetProcessHeap(), 0, exservices);
+    free(exservices);
     if (!ret && GetLastError() == ERROR_MORE_DATA && attempt)
         goto retry; /* service start race condition */
     ok(ret, "Expected success, got error %lu\n", GetLastError());
@@ -1795,10 +1795,10 @@ static BOOL test_enum_svc_ex(int attempt)
     /* Get the number of active win32 services */
     pEnumServicesStatusExW(scm_handle, 0, SERVICE_WIN32, SERVICE_ACTIVE,
                            NULL, 0, &needed, &returned, NULL, NULL);
-    exservices = HeapAlloc(GetProcessHeap(), 0, needed);
+    exservices = malloc(needed);
     ret = pEnumServicesStatusExW(scm_handle, 0, SERVICE_WIN32, SERVICE_ACTIVE,
                                  (BYTE*)exservices, needed, &needed, &returned, NULL, NULL);
-    HeapFree(GetProcessHeap(), 0, exservices);
+    free(exservices);
     if (!ret && GetLastError() == ERROR_MORE_DATA && attempt)
         goto retry; /* service start race condition */
 
@@ -1807,10 +1807,10 @@ static BOOL test_enum_svc_ex(int attempt)
     /* Get the number of inactive win32 services */
     pEnumServicesStatusExW(scm_handle, 0, SERVICE_WIN32, SERVICE_INACTIVE,
                            NULL, 0, &needed, &returned, NULL, NULL);
-    exservices = HeapAlloc(GetProcessHeap(), 0, needed);
+    exservices = malloc(needed);
     ret = pEnumServicesStatusExW(scm_handle, 0, SERVICE_WIN32, SERVICE_INACTIVE,
                                  (BYTE*)exservices, needed, &needed, &returned, NULL, NULL);
-    HeapFree(GetProcessHeap(), 0, exservices);
+    free(exservices);
     if (!ret && GetLastError() == ERROR_MORE_DATA && attempt)
         goto retry; /* service start race condition */
 
@@ -1819,10 +1819,10 @@ static BOOL test_enum_svc_ex(int attempt)
     /* Get the number of win32 services */
     pEnumServicesStatusExW(scm_handle, 0, SERVICE_WIN32, SERVICE_STATE_ALL,
                            NULL, 0, &needed, &returned, NULL, NULL);
-    exservices = HeapAlloc(GetProcessHeap(), 0, needed);
+    exservices = malloc(needed);
     ret = pEnumServicesStatusExW(scm_handle, 0, SERVICE_WIN32, SERVICE_STATE_ALL,
                                  (BYTE*)exservices, needed, &needed, &returned, NULL, NULL);
-    HeapFree(GetProcessHeap(), 0, exservices);
+    free(exservices);
     if (!ret && GetLastError() == ERROR_MORE_DATA && attempt)
         goto retry; /* service start race condition */
 
@@ -1837,7 +1837,7 @@ static BOOL test_enum_svc_ex(int attempt)
     ret = pEnumServicesStatusExW(scm_handle, 0, SERVICE_WIN32 | SERVICE_DRIVER,
                                  SERVICE_STATE_ALL, NULL, 0, &needed, &returned, NULL, NULL);
     ok(!ret, "Expected failure\n");
-    exservices = HeapAlloc(GetProcessHeap(), 0, needed);
+    exservices = malloc(needed);
     ret = pEnumServicesStatusExW(scm_handle, 0, SERVICE_WIN32 | SERVICE_DRIVER,
                                  SERVICE_STATE_ALL, (BYTE*)exservices, needed, &needed, &returned, NULL, NULL);
     if (!ret && GetLastError() == ERROR_MORE_DATA && attempt)
@@ -1908,7 +1908,7 @@ static BOOL test_enum_svc_ex(int attempt)
             }
         }
     }
-    HeapFree(GetProcessHeap(), 0, exservices);
+    free(exservices);
 
     if ((servicecountactive || servicecountinactive) && attempt)
          goto retry; /* service start|stop race condition */
@@ -2154,7 +2154,7 @@ static void test_sequence(void)
     ok(!ret, "Expected failure\n");
     ok(GetLastError() == ERROR_INSUFFICIENT_BUFFER, "Expected ERROR_INSUFFICIENT_BUFFER, got %ld\n", GetLastError());
 
-    config = HeapAlloc(GetProcessHeap(), 0, needed);
+    config = malloc(needed);
     given = needed;
     SetLastError(0xdeadbeef);
     ret = QueryServiceConfigA(svc_handle, config, given, &needed);
@@ -2182,7 +2182,7 @@ static void test_sequence(void)
     ok(ret, "ChangeServiceConfig failed (err=%ld)\n", GetLastError());
 
     QueryServiceConfigA(svc_handle, NULL, 0, &needed);
-    config = HeapReAlloc(GetProcessHeap(), 0, config, needed);
+    config = realloc(config, needed);
     ok(QueryServiceConfigA(svc_handle, config, needed, &needed), "QueryServiceConfig failed\n");
     ok(config->lpBinaryPathName && config->lpLoadOrderGroup && config->lpDependencies && config->lpServiceStartName &&
         config->lpDisplayName, "Expected all string struct members to be non-NULL\n");
@@ -2201,7 +2201,7 @@ static void test_sequence(void)
     ok(ret, "Expected success, got error %lu\n", GetLastError());
     CloseServiceHandle(svc_handle);
     CloseServiceHandle(scm_handle);
-    HeapFree(GetProcessHeap(), 0, config);
+    free(config);
 }
 
 static void test_queryconfig2(void)
@@ -2890,7 +2890,7 @@ static void test_EventLog(void)
     ok(!ret, "QueryServiceConfig should fail\n");
     ok(GetLastError() == ERROR_INSUFFICIENT_BUFFER, "got %lu\n", GetLastError());
 
-    config = HeapAlloc(GetProcessHeap(), 0, size);
+    config = malloc(size);
     ret = QueryServiceConfigA(svc_handle, config, size, &size);
     ok(ret, "QueryServiceConfig error %lu\n", GetLastError());
 
@@ -2912,7 +2912,7 @@ static void test_EventLog(void)
        !strcmp(config->lpDisplayName, "Event Log") /* XP */ ||
        !strcmp(config->lpDisplayName, "Windows Event Log") /* Vista+ */, "got %s\n", config->lpDisplayName);
 
-    HeapFree(GetProcessHeap(), 0, config);
+    free(config);
 
     memset(&status, 0, sizeof(status));
     size = sizeof(status);