Justus Winter, le Wed 27 Nov 2013 13:31:09 +0100, a écrit :
> * init/init.c (S_startup_essential_task): Fix port leak.
Ack.
> ---
> init/init.c | 6 ++++--
> 1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/init/init.c b/init/init.c
> index de5dd6b..b7b40bd 100644
> --- a/init/init.c
> +++ b/init/init.c
> @@ -1202,6 +1202,10 @@ S_startup_essential_task (mach_port_t server,
> static int authinit, procinit, execinit;
> int fail;
>
> + /* Always deallocate the extra reference this message carries. */
> + if (MACH_PORT_VALID (credential))
> + mach_port_deallocate (mach_task_self (), credential);
> +
> if (credential != host_priv)
> return EPERM;
>
> @@ -1209,8 +1213,6 @@ S_startup_essential_task (mach_port_t server,
> if (fail)
> return fail;
>
> - mach_port_deallocate (mach_task_self (), credential);
> -
> if (!booted)
> {
> if (!strcmp (name, "auth"))
> --
> 1.7.10.4
>
--
Samuel
"c'est pas nous qui sommes à la rue, c'est la rue qui est à nous"