I forgot to mention that: 1) The CreateProcess documentation
https://learn.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-createprocessa doesn't mention anything about taking ownership of this or any other buffer passed to it. 2) The cmdline buffer gets created by the argv_to_cmdline function https://github.com/gcc-mirror/gcc/blob/master/libiberty/pex-win32.c#L339 which has this comment right above it: /* Return a Windows command-line from ARGV. It is the caller's responsibility to free the string returned. */ Thanks, Costas On Thu, 2 Mar 2023 at 07:32, Richard Biener <richard.guent...@gmail.com> wrote: > On Wed, Mar 1, 2023 at 7:14 PM Costas Argyris via Gcc-patches > <gcc-patches@gcc.gnu.org> wrote: > > > > Hi > > > > It seems that the win32_spawn function in libiberty/pex-win32.c is > leaking > > the cmdline buffer in 2/3 exit scenarios (it is only free'd in 1/3). > The > > problem here is that the cleanup code is written 3 times, one at each > exit > > scenario. > > > > The proposed attached refactoring has the cleanup code appearing just > once > > and is executed for all exit scenarios, reducing the likelihood of such > > leaks in the future. > > One could imagine that CreateProcess in case of success takes ownership of > the buffer pointed to by cmdline? If you can confirm it is not then the > patch > looks OK to me. > > Thanks, > Richard. > > > Thanks, > > Costas >