* exec.cc (execvp): Call find_exec with FE_NNF flag to enforce
a NULL return when executable isn't found in $PATH. Convert NULL to "". (execvpe): Ditto. * spawn.cc (spawn_guts): Return with EFAULT if prog_arg is NULL. Return with ENOENT if prog_arg is empty string. Add a comment.
This commit is contained in:
		
							parent
							
								
									b2d6e5dfd3
								
							
						
					
					
						commit
						6d63272b53
					
				| 
						 | 
				
			
			@ -1,3 +1,12 @@
 | 
			
		|||
2009-12-21  Corinna Vinschen  <corinna@vinschen.de>
 | 
			
		||||
 | 
			
		||||
	* exec.cc (execvp): Call find_exec with FE_NNF flag to enforce
 | 
			
		||||
	a NULL return when executable isn't found in $PATH.  Convert NULL
 | 
			
		||||
	to "".
 | 
			
		||||
	(execvpe): Ditto.
 | 
			
		||||
	* spawn.cc (spawn_guts): Return with EFAULT if prog_arg is NULL.
 | 
			
		||||
	Return with ENOENT if prog_arg is empty string.  Add a comment.
 | 
			
		||||
 | 
			
		||||
2009-12-21  Thomas Wolff  <towo@towo.net>
 | 
			
		||||
 | 
			
		||||
	* fhandler_console.cc (get_nonascii_key): Generate ESC prefix 
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -86,14 +86,14 @@ extern "C" int
 | 
			
		|||
execvp (const char *path, char * const *argv)
 | 
			
		||||
{
 | 
			
		||||
  path_conv buf;
 | 
			
		||||
  return  execv (find_exec (path, buf), argv);
 | 
			
		||||
  return execv (find_exec (path, buf, "PATH=", FE_NNF) ?: "", argv);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
extern "C" int
 | 
			
		||||
execvpe (const char *path, char * const *argv, char *const *envp)
 | 
			
		||||
{
 | 
			
		||||
  path_conv buf;
 | 
			
		||||
  return  execve (find_exec (path, buf), argv, envp);
 | 
			
		||||
  return execve (find_exec (path, buf, "PATH=", FE_NNF) ?: "", argv, envp);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
extern "C" int
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -281,12 +281,19 @@ spawn_guts (const char *prog_arg, const char *const *argv,
 | 
			
		|||
  if (prog_arg == NULL)
 | 
			
		||||
    {
 | 
			
		||||
      syscall_printf ("prog_arg is NULL");
 | 
			
		||||
      set_errno (EINVAL);
 | 
			
		||||
      set_errno (EFAULT);	/* As on Linux. */
 | 
			
		||||
      return -1;
 | 
			
		||||
    }
 | 
			
		||||
  if (!prog_arg[0])
 | 
			
		||||
    {
 | 
			
		||||
      syscall_printf ("prog_arg is empty");
 | 
			
		||||
      set_errno (ENOENT);	/* Per POSIX */
 | 
			
		||||
      return -1;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  syscall_printf ("spawn_guts (%d, %.9500s)", mode, prog_arg);
 | 
			
		||||
 | 
			
		||||
  /* FIXME: This is no error condition on Linux. */
 | 
			
		||||
  if (argv == NULL)
 | 
			
		||||
    {
 | 
			
		||||
      syscall_printf ("argv is NULL");
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue