* errno.cc (errmap): Add error codes for invalid binaries.

* exec.cc (execvp): Call spawnve with _P_PATH_TYPE_EXEC flag
	from here.
	(execvpe): Ditto.
	* spawn.cc (spawn_guts): Filter _P_PATH_TYPE_EXEC from mode and
	store in p_type_exec.  Call av::fixup with addtional p_type_exec
	argument.
	(spawnve): Check for filtered mode.
	(spawnvpe): Add _P_PATH_TYPE_EXEC flag when calling spawnve.
	(av::fixup): Accept additional bool parameter p_type_exec.  Only check
	for script if p_type_exec is true.
	* winf.h (_P_PATH_TYPE_EXEC): Define.
	(_P_MODE): Define.
	(av::fixup): Declare with additional bool parameter.
This commit is contained in:
Corinna Vinschen
2011-01-19 09:15:17 +00:00
parent fc660168bf
commit 808aae3d13
5 changed files with 72 additions and 11 deletions

View File

@@ -1,7 +1,7 @@
/* errno.cc: errno-related functions
Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
2006, 2008, 2009, 2010 Red Hat, Inc.
2006, 2008, 2009, 2010, 2011 Red Hat, Inc.
This file is part of Cygwin.
@@ -37,6 +37,7 @@ static NO_COPY struct
X (ACTIVE_CONNECTIONS, EAGAIN),
X (ALREADY_EXISTS, EEXIST),
X (BAD_DEVICE, ENODEV),
X (BAD_EXE_FORMAT, ENOEXEC),
X (BAD_NETPATH, ENOENT),
X (BAD_NET_NAME, ENOENT),
X (BAD_NET_RESP, ENOSYS),
@@ -67,6 +68,7 @@ static NO_COPY struct
X (EA_TABLE_FULL, ENOSPC),
X (END_OF_MEDIA, ENOSPC),
X (EOM_OVERFLOW, EIO),
X (EXE_MARKED_INVALID, ENOEXEC),
X (FILEMARK_DETECTED, EIO),
X (FILENAME_EXCED_RANGE, ENAMETOOLONG),
X (FILE_CORRUPT, EEXIST),
@@ -81,11 +83,13 @@ static NO_COPY struct
X (INVALID_DATA, EINVAL),
X (INVALID_DRIVE, ENODEV),
X (INVALID_EA_NAME, EINVAL),
X (INVALID_EXE_SIGNATURE, ENOEXEC),
X (INVALID_FUNCTION, EBADRQC),
X (INVALID_HANDLE, EBADF),
X (INVALID_NAME, ENOENT),
X (INVALID_PARAMETER, EINVAL),
X (INVALID_SIGNAL_NUMBER, EINVAL),
X (IOPL_NOT_ENABLED, ENOEXEC),
X (IO_DEVICE, EIO),
X (IO_PENDING, EAGAIN),
X (LOCK_VIOLATION, EACCES),