summaryrefslogtreecommitdiff
path: root/usr/src/lib/pysolaris
diff options
context:
space:
mode:
authorKeith M Wesolowski <wesolows@foobazco.org>2014-11-19 18:47:18 +0000
committerKeith M Wesolowski <wesolows@foobazco.org>2014-11-19 18:47:18 +0000
commit9df4635546174b6e0dd39adace8563ebd85536e1 (patch)
tree76e4897e087a14909e1231d140e34da36180a28b /usr/src/lib/pysolaris
parentd0b6aa18f1151b5678b45ba5235417d2fda31967 (diff)
parent1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9f (diff)
downloadillumos-joyent-9df4635546174b6e0dd39adace8563ebd85536e1.tar.gz
[illumos-gate merge]
commit 1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9f 5316 allow smbadm join to use RPC commit 177d5b5f8c0e969013441207a0a705ae66b08cf7 5331 want sockaddr(3SOCKET) Manifests: usr/src/pkg/manifests/system-library.man3socket.inc
Diffstat (limited to 'usr/src/lib/pysolaris')
-rw-r--r--usr/src/lib/pysolaris/common/misc.c35
1 files changed, 16 insertions, 19 deletions
diff --git a/usr/src/lib/pysolaris/common/misc.c b/usr/src/lib/pysolaris/common/misc.c
index 923cab445f..da7bb0075f 100644
--- a/usr/src/lib/pysolaris/common/misc.c
+++ b/usr/src/lib/pysolaris/common/misc.c
@@ -26,6 +26,7 @@
#include <Python.h>
#include <zone.h>
#include <libintl.h>
+#include <idmap.h>
#include <directory.h>
#ifdef __lint
@@ -62,36 +63,32 @@ py_sid_to_id(PyObject *self, PyObject *args)
static PyObject *
py_sid_to_name(PyObject *self, PyObject *args)
{
- int isuser;
+ int isuser, err, flag = IDMAP_REQ_FLG_USE_CACHE;
char *name, *sid;
- directory_error_t e;
- uint64_t classes;
+ idmap_stat stat;
+ uid_t pid;
PyObject *ret;
if (!PyArg_ParseTuple(args, "si", &sid, &isuser))
return (NULL);
- e = directory_name_from_sid(NULL, sid, &name, &classes);
- if (e != NULL) {
- directory_error_free(e);
+
+ err = sid_to_id(sid, isuser, &pid);
+ if (err) {
PyErr_SetString(PyExc_KeyError, sid);
return (NULL);
}
- if (name == NULL) {
+ if (isuser)
+ stat = idmap_getwinnamebyuid(pid, flag, &name, NULL);
+ else
+ stat = idmap_getwinnamebygid(pid, flag, &name, NULL);
+ if (stat < 0) {
PyErr_SetString(PyExc_KeyError, sid);
return (NULL);
}
- if (isuser) {
- if (!(classes & DIRECTORY_CLASS_USER)) {
- free(name);
- PyErr_SetString(PyExc_KeyError, sid);
- return (NULL);
- }
- } else {
- if (!(classes & DIRECTORY_CLASS_GROUP)) {
- free(name);
- PyErr_SetString(PyExc_KeyError, sid);
- return (NULL);
- }
+
+ if (name == NULL) {
+ PyErr_SetString(PyExc_KeyError, sid);
+ return (NULL);
}
ret = PyString_FromString(name);