diff options
author | Roger A. Faulkner <Roger.Faulkner@Oracle.COM> | 2010-07-07 17:36:17 -0700 |
---|---|---|
committer | Roger A. Faulkner <Roger.Faulkner@Oracle.COM> | 2010-07-07 17:36:17 -0700 |
commit | 794f0adb050e571bbfde4d2a19b9f88b852079dd (patch) | |
tree | c1735b3eda175e9096f5b062a73614e73aa5cd9a /usr/src/lib/libproc/common | |
parent | 07925104db56e5c3eacc4865b918bd16af5cec59 (diff) | |
download | illumos-gate-794f0adb050e571bbfde4d2a19b9f88b852079dd.tar.gz |
PSARC 2010/235 POSIX 1003.1-2008 *at(2) syscalls
6910251 need support for all POSIX.1-2008 *at(2) syscalls
6964835 mknod(2) auditing omits the pathname for invalid arguments
Diffstat (limited to 'usr/src/lib/libproc/common')
-rw-r--r-- | usr/src/lib/libproc/common/pr_rename.c | 30 | ||||
-rw-r--r-- | usr/src/lib/libproc/common/proc_names.c | 15 |
2 files changed, 32 insertions, 13 deletions
diff --git a/usr/src/lib/libproc/common/pr_rename.c b/usr/src/lib/libproc/common/pr_rename.c index 7696188111..fe0a2847a4 100644 --- a/usr/src/lib/libproc/common/pr_rename.c +++ b/usr/src/lib/libproc/common/pr_rename.c @@ -20,8 +20,7 @@ */ /* - * Copyright 2010 Sun Microsystems, Inc. All rights reserved. - * Use is subject to license terms. + * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved. */ #include <stdlib.h> @@ -88,20 +87,34 @@ int pr_link(struct ps_prochandle *Pr, const char *existing, const char *new) { sysret_t rval; - argdes_t argd[2]; + argdes_t argd[5]; argdes_t *adp; int error; if (Pr == NULL) return (link(existing, new)); - adp = &argd[0]; /* existing argument */ + adp = &argd[0]; /* first directory fd argument */ + adp->arg_value = AT_FDCWD; + adp->arg_object = NULL; + adp->arg_type = AT_BYVAL; + adp->arg_inout = AI_INPUT; + adp->arg_size = 0; + + adp++; /* existing argument */ adp->arg_value = 0; adp->arg_object = (void *)existing; adp->arg_type = AT_BYREF; adp->arg_inout = AI_INPUT; adp->arg_size = strlen(existing) + 1; + adp++; /* second directory fd argument */ + adp->arg_value = AT_FDCWD; + adp->arg_object = NULL; + adp->arg_type = AT_BYVAL; + adp->arg_inout = AI_INPUT; + adp->arg_size = 0; + adp++; /* new argument */ adp->arg_value = 0; adp->arg_object = (void *)new; @@ -109,7 +122,14 @@ pr_link(struct ps_prochandle *Pr, const char *existing, const char *new) adp->arg_inout = AI_INPUT; adp->arg_size = strlen(new) + 1; - error = Psyscall(Pr, &rval, SYS_link, 2, &argd[0]); + adp++; /* flag argument */ + adp->arg_value = 0; + adp->arg_object = NULL; + adp->arg_type = AT_BYVAL; + adp->arg_inout = AI_INPUT; + adp->arg_size = 0; + + error = Psyscall(Pr, &rval, SYS_linkat, 5, &argd[0]); if (error) { errno = (error > 0) ? error : ENOSYS; diff --git a/usr/src/lib/libproc/common/proc_names.c b/usr/src/lib/libproc/common/proc_names.c index 96f58363c5..3b7d1e25bf 100644 --- a/usr/src/lib/libproc/common/proc_names.c +++ b/usr/src/lib/libproc/common/proc_names.c @@ -20,8 +20,7 @@ */ /* - * Copyright 2010 Sun Microsystems, Inc. All rights reserved. - * Use is subject to license terms. + * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. */ #include <stdio.h> @@ -121,11 +120,11 @@ static const char *const systable[] = { "write", /* 4 */ "open", /* 5 */ "close", /* 6 */ - NULL, /* 7 */ + "linkat", /* 7 */ NULL, /* 8 */ "link", /* 9 */ "unlink", /* 10 */ - NULL, /* 11 */ + "symlinkat", /* 11 */ "chdir", /* 12 */ "time", /* 13 */ "mknod", /* 14 */ @@ -136,7 +135,7 @@ static const char *const systable[] = { "lseek", /* 19 */ "getpid", /* 20 */ "mount", /* 21 */ - NULL, /* 22 */ + "readlinkat", /* 22 */ "setuid", /* 23 */ "getuid", /* 24 */ "stime", /* 25 */ @@ -162,7 +161,7 @@ static const char *const systable[] = { "faccessat", /* 45 */ "setgid", /* 46 */ "getgid", /* 47 */ - "signal", /* 48 */ + "mknodat", /* 48 */ "msgsys", /* 49 */ "sysi86", /* 50 */ "acct", /* 51 */ @@ -215,8 +214,8 @@ static const char *const systable[] = { "sigaction", /* 98 */ "sigpending", /* 99 */ "context", /* 100 */ - NULL, /* 101 */ - NULL, /* 102 */ + "fchmodat", /* 101 */ + "mkdirat", /* 102 */ "statvfs", /* 103 */ "fstatvfs", /* 104 */ "getloadavg", /* 105 */ |