Package: passwd
Version: 1:4.1.4.2+svn3283-3
Severity: minor
Justification: cosmetic
Tags: upstream

Hi,

With libc implementations (like glibc on hurd) that can return an
exec(2) error from posix_spawn, if nscd is not installed then useradd
and userdel write

        Failed to flush the nscd cache.
        posix_spawn() error=XXX

where XXX is the error number for ENOENT (0x10 << 26 + 2 = 1073741826
on Hurd) to stderr 4 times.  It's just a warning message; no actual
harm done.

The cause: lib/nscd.c contains

        char *spawnedArgs[] = {"/usr/sbin/nscd", "nscd", "-i", service, NULL};
        char *spawnedEnv[] = {NULL};

        /* spawn process */
        err = posix_spawn (&pid, spawnedArgs[0], NULL, NULL,
                           spawnedArgs, spawnedEnv);
        if(0 != err)
        {
                (void) fputs (_(MSG_NSCD_FLUSH_CACHE_FAILED), stderr);
                (void) fprintf (stderr, "posix_spawn() error=%d\n", err);
                return -1;
        }

        /* Wait for the spawned process to exit */
        termpid = TEMP_FAILURE_RETRY (waitpid (pid, &status, 0));
        if (-1 == termpid)
        {
[...]
        }
        else if (termpid != pid)
        {
[...]
        }

        return 0;

Questions:

* This ignores failure to nscd on platforms reporting it through
  WIFEXITED(status) && WEXITSTATUS(status) == 127 but considers it an
  error when it comes from the return value of posix_spawn.  Which
  behavior is intended?

  One possibility might be to return 0 for ENOENT (since it is an
  expected error) and ignore normal exits with nonzero status
  (because nscd can exit with status 1 if the daemon wasn't
  running or 127 if it doesn't exist) but report other errors.

* Is it intended that "nscd" is passed as argv[1] rather than argv[0]?

* Why not use the PATH (posix_spawnp) to discover where "nscd" is, to
  allow the admin to install a copy to /usr/local/sbin/nscd?

* Is it safe to run nscd with an empty environment (in particular
  without $PATH)?  Is the environment scrubbing intended?

Thanks for keeping core programs in good shape.  Thoughts welcome as
always.

Regards,
Jonathan



-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to