Which returned parameters do I need to free from GetNamedSecurityInfo API?

advapi32, c++, winapi

Solution

According to MSDN:

A pointer to a variable that receives a pointer to the owner SID in the security descriptor

A pointer to a variable that receives a pointer to the primary group SID in the returned security descriptor

A pointer to a variable that receives a pointer to the DACL in the returned security descriptor

A pointer to a variable that receives a pointer to the SACL in the returned security descriptor

those parameters will point to the corresponding parameters in the security descriptor returned in ppSecurityDescriptor.

You only need to free `ppSecurityDescriptor` as the other pointers point to the fields within the security descriptor.

Problem

When I called GetNamedSecurityInfo API and it succeeded, the MSDN states that I need to call `LocalFree` on `ppSecurityDescriptor`, but what about `ppDacl` and `ppSacl`?

Original source