Annotation of embedaddon/sudo/src/sudo_noexec.c, revision 1.1.1.1

1.1       misho       1: /*
                      2:  * Copyright (c) 2004-2005, 2010-2011 Todd C. Miller <Todd.Miller@courtesan.com>
                      3:  *
                      4:  * Permission to use, copy, modify, and distribute this software for any
                      5:  * purpose with or without fee is hereby granted, provided that the above
                      6:  * copyright notice and this permission notice appear in all copies.
                      7:  *
                      8:  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
                      9:  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
                     10:  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
                     11:  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
                     12:  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
                     13:  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
                     14:  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
                     15:  */
                     16: 
                     17: #include <config.h>
                     18: 
                     19: #include <sys/types.h>
                     20: 
                     21: #include <errno.h>
                     22: #ifndef HAVE_TIMESPEC
                     23: # include <time.h>
                     24: #endif
                     25: #include <stdarg.h>
                     26: 
                     27: #include "missing.h"
                     28: 
                     29: /*
                     30:  * Dummy versions of the execve() family of syscalls.  We don't need
                     31:  * to stub out all of them, just the ones that correspond to actual
                     32:  * system calls (which varies by OS).  Note that it is still possible
                     33:  * to access the real syscalls via the syscall() interface but very
                     34:  * few programs actually do that.
                     35:  */
                     36: 
                     37: #define DUMMY_BODY                             \
                     38: {                                              \
                     39:     errno = EACCES;                            \
                     40:     return -1;                                 \
                     41: }
                     42: 
                     43: #define DUMMY2(fn, t1, t2)                     \
                     44: int                                            \
                     45: fn(t1 a1, t2 a2)                               \
                     46: DUMMY_BODY
                     47: 
                     48: #define DUMMY3(fn, t1, t2, t3)                 \
                     49: int                                            \
                     50: fn(t1 a1, t2 a2, t3 a3)                                \
                     51: DUMMY_BODY
                     52: 
                     53: #define DUMMY_VA(fn, t1, t2)                   \
                     54: int                                            \
                     55: fn(t1 a1, t2 a2, ...)                          \
                     56: DUMMY_BODY
                     57: 
                     58: DUMMY_VA(execl, const char *, const char *)
                     59: DUMMY_VA(_execl, const char *, const char *)
                     60: DUMMY_VA(__execl, const char *, const char *)
                     61: DUMMY_VA(execle, const char *, const char *)
                     62: DUMMY_VA(_execle, const char *, const char *)
                     63: DUMMY_VA(__execle, const char *, const char *)
                     64: DUMMY_VA(execlp, const char *, const char *)
                     65: DUMMY_VA(_execlp, const char *, const char *)
                     66: DUMMY_VA(__execlp, const char *, const char *)
                     67: DUMMY2(execv, const char *, char * const *)
                     68: DUMMY2(_execv, const char *, char * const *)
                     69: DUMMY2(__execv, const char *, char * const *)
                     70: DUMMY2(execvp, const char *, char * const *)
                     71: DUMMY2(_execvp, const char *, char * const *)
                     72: DUMMY2(__execvp, const char *, char * const *)
                     73: DUMMY3(execvP, const char *, const char *, char * const *)
                     74: DUMMY3(_execvP, const char *, const char *, char * const *)
                     75: DUMMY3(__execvP, const char *, const char *, char * const *)
                     76: DUMMY3(execve, const char *, char * const *, char * const *)
                     77: DUMMY3(_execve, const char *, char * const *, char * const *)
                     78: DUMMY3(__execve, const char *, char * const *, char * const *)
                     79: DUMMY3(fexecve, int , char * const *, char * const *)
                     80: DUMMY3(_fexecve, int , char * const *, char * const *)
                     81: DUMMY3(__fexecve, int , char * const *, char * const *)

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>