On Tue, Nov 15, 2022 at 7:12 PM Japin Li <japi...@hotmail.com> wrote:

>
> On Wed, 16 Nov 2022 at 10:52, Ted Yu <yuzhih...@gmail.com> wrote:
> > On Tue, Nov 15, 2022 at 6:35 PM Japin Li <japi...@hotmail.com> wrote:
> >>
> >>         fd = popen(cmd, "r");
> >> -       if (fd == NULL || fgets(filename, sizeof(filename), fd) == NULL
> ||
> >> pclose(fd) != 0)
> >> +       if (fd == NULL || fgets(filename, sizeof(filename), fd) == NULL)
> >>         {
> >> +               pclose(fd);
> >>                 write_stderr(_("%s: could not determine the data
> directory
> >> using command \"%s\"\n"), progname, cmd);
> >>                 exit(1);
> >>         }
> >>
> >> Here, segfault maybe occurs if fd is NULL.  I think we can remove
> pclose()
> >> safely since the process will exit.
> >>
> >
> > That means we're going back to v1 of the patch.
> >
>
> After some rethinking, I find the origin code do not have problems.
>
> If fd is NULL or fgets() returns NULL, the process exits.  Otherwise, we
> call
> pclose() to close fd.  The code isn't straightforward, however, it is
> correct.
>
>
>
> Please read this sentence from my first post:

If the fgets() call doesn't return NULL, the pclose() would be skipped.

Reply via email to