Applied, thanks!

Mikhail Karpov, le jeu. 01 oct. 2026 06:46:49 +0700, a ecrit:
> On Thu, 1 Oct 2026 00:56:12 Samuel Thibault wrote:
> 
> > > diff --git a/proc/mgt.c b/proc/mgt.c
> > > index 05af823f..9ac7fa3e 100644
> > > --- a/proc/mgt.c
> > > +++ b/proc/mgt.c
> > > @@ -221,6 +221,14 @@ S_proc_child (struct proc *parentp,
> > >    if (childp->p_parentset)
> > >      return EBUSY;
> > >
> > > +  char *exe_path = NULL;
> > > +  if (parentp->exe)
> > > +    {
> > > +      exe_path = strdup (parentp->exe);
> >
> > Better only strdup if !childp->exe
> 
> It seemed to me that the childp->exe field might change somewhere else in
> the code before the if (!childp->exe && parentp->exe) check.  If that is
> not the case, then perhaps it would be best to simply move the
> if (! childp->exe && parentp->exe) check and the
> childp->exe = strdup (parentp->exe) assignment to a point before
> mach_port_deallocate.
> 
> Thanks,
> 
> -- 
> Mikhail Karpov

> From dc9fe77ede2a15d2eaef6fbe0c3b40fb9d61fc41 Mon Sep 17 00:00:00 2001
> From: Mikhail Karpov <[email protected]>
> Date: Thu, 1 Oct 2026 06:30:07 +0700
> Subject: [PATCH] Fixing strdup in proc/mgt.c patch
> 
> ---
>  proc/mgt.c | 9 +++++++--
>  1 file changed, 7 insertions(+), 2 deletions(-)
> 
> diff --git a/proc/mgt.c b/proc/mgt.c
> index 05af823f..73790c8b 100644
> --- a/proc/mgt.c
> +++ b/proc/mgt.c
> @@ -221,6 +221,13 @@ S_proc_child (struct proc *parentp,
>    if (childp->p_parentset)
>      return EBUSY;
>  
> +  if (!childp->exe && parentp->exe)
> +    {
> +      childp->exe = strdup (parentp->exe);
> +      if (!childp->exe)
> +        return errno;
> +    }
> +
>    mach_port_deallocate (mach_task_self (), childt);
>  
>    /* Process identification.
> @@ -273,8 +280,6 @@ S_proc_child (struct proc *parentp,
>        childp->start_code = parentp->start_code;
>        childp->end_code = parentp->end_code;
>      }
> -  if (! childp->exe && parentp->exe)
> -    childp->exe = strdup (parentp->exe);
>  
>    if (MACH_PORT_VALID (parentp->p_task_namespace))
>      {
> -- 
> 2.43.0
> 


-- 
Samuel
quit   When the quit statement is read, the  bc  processor
       is  terminated, regardless of where the quit state-
       ment is found.  For example, "if  (0  ==  1)  quit"
       will cause bc to terminate.
(Seen in the manpage for "bc". Note the "if" statement's logic)

Reply via email to