]> git.saurik.com Git - apple/libinfo.git/commitdiff
Libinfo-222.4.6.tar.gz mac-os-x-1047x86 v222.4.6
authorApple <opensource@apple.com>
Tue, 2 May 2006 16:17:04 +0000 (16:17 +0000)
committerApple <opensource@apple.com>
Tue, 2 May 2006 16:17:04 +0000 (16:17 +0000)
19 files changed:
Makefile.preamble
lookup.subproj/getaddrinfo.c
lookup.subproj/lu_alias.c
lookup.subproj/lu_bootparam.c
lookup.subproj/lu_fstab.c
lookup.subproj/lu_group.c
lookup.subproj/lu_host.c
lookup.subproj/lu_host_async.c
lookup.subproj/lu_network.c
lookup.subproj/lu_printer.c
lookup.subproj/lu_protocol.c
lookup.subproj/lu_rpc.c
lookup.subproj/lu_utils.c
mdns.subproj/dnssd_clientstub.c
mdns.subproj/dnssd_ipc.h
membership.subproj/memberd.defs
membership.subproj/membership.c
rpc.subproj/getrpcent.c
rpc.subproj/svc_auth_unix.c

index bea59231931e608d41faef22915cb507c3a6189f..25d484ec8a2ad34c5865f0bd73409a558d4ab96a 100644 (file)
@@ -3,4 +3,4 @@ STRIP_ON_INSTALL = NO
 BEFORE_INSTALL += debug profile
 override LINK_SUBPROJECTS = NO
 
-export CCOMPILER = /usr/bin/gcc-3.5
+# export CCOMPILER = /usr/bin/gcc-X.X
index ae67e318b400d61a4d6854e04006b655fc13b667..ce51a5e784dbeb14cbf2a57fd855e6ab38b23077 100644 (file)
@@ -32,7 +32,6 @@
 #include <arpa/inet.h>
 #include <string.h>
 #include <stdlib.h>
-#include <errno.h>
 #include <stdio.h>
 #include <ctype.h>
 #include <rpc/types.h>
@@ -107,7 +106,7 @@ static int
 gai_family_type_check(int32_t f)
 {
        int32_t i;
-
+       
        for (i = 0; i < supported_family_count; i++)
        {
                if (f == supported_family[i]) return 0;
@@ -120,7 +119,7 @@ static int
 gai_socket_type_check(int32_t s)
 {
        int32_t i;
-
+       
        for (i = 0; i < supported_socket_count; i++)
        {
                if (s == supported_socket[i]) return 0;
@@ -133,7 +132,7 @@ static int
 gai_protocol_type_check(int32_t p)
 {
        int32_t i;
-
+       
        for (i = 0; i < supported_protocol_count; i++)
        {
                if (p == supported_protocol[i]) return 0;
@@ -146,7 +145,7 @@ static int
 gai_socket_protocol_type_check(int32_t s, int32_t p)
 {
        int32_t i, j, ss, sp;
-
+       
        for (i = 0, j = 0; i < supported_socket_protocol_pair_count; i++, j+=2)
        {
                ss = supported_socket_protocol_pair[j];
@@ -518,7 +517,6 @@ gai_make_query(const char *nodename, const char *servname, const struct addrinfo
        if (!xdr_int(&outxdr, (int32_t *)&na))
        {
                xdr_destroy(&outxdr);
-               errno = EIO;
                return EAI_SYSTEM;
        }
 
@@ -527,7 +525,6 @@ gai_make_query(const char *nodename, const char *servname, const struct addrinfo
                if (encode_kv(&outxdr, "name", nodename) != 0)
                {
                        xdr_destroy(&outxdr);
-                       errno = EIO;
                        return EAI_SYSTEM;
                }
        }
@@ -537,7 +534,6 @@ gai_make_query(const char *nodename, const char *servname, const struct addrinfo
                if (encode_kv(&outxdr, "service", servname) != 0)
                {
                        xdr_destroy(&outxdr);
-                       errno = EIO;
                        return EAI_SYSTEM;
                }
        }
@@ -548,69 +544,62 @@ gai_make_query(const char *nodename, const char *servname, const struct addrinfo
                if (encode_kv(&outxdr, "protocol", str) != 0)
                {
                        xdr_destroy(&outxdr);
-                       errno = EIO;
                        return EAI_SYSTEM;
                }
        }
-
+       
        if (socktype != SOCK_UNSPEC)
        {
                snprintf(str, 64, "%u", socktype);
                if (encode_kv(&outxdr, "socktype", str) != 0)
                {
                        xdr_destroy(&outxdr);
-                       errno = EIO;
                        return EAI_SYSTEM;
                }
        }
-
+       
        if (family != PF_UNSPEC)
        {
                snprintf(str, 64, "%u", family);
                if (encode_kv(&outxdr, "family", str) != 0)
                {
                        xdr_destroy(&outxdr);
-                       errno = EIO;
                        return EAI_SYSTEM;
                }
        }
-
+       
        if (canonname != 0)
        {
                if (encode_kv(&outxdr, "canonname", "1") != 0)
                {
                        xdr_destroy(&outxdr);
-                       errno = EIO;
                        return EAI_SYSTEM;
                }
        }
-
+       
        if (passive != 0)
        {
                if (encode_kv(&outxdr, "passive", "1") != 0)
                {
                        xdr_destroy(&outxdr);
-                       errno = EIO;
                        return EAI_SYSTEM;
                }
        }
-
+       
        if (parallel != 0)
        {
                if (encode_kv(&outxdr, "parallel", "1") != 0)
                {
                        xdr_destroy(&outxdr);
-                       errno = EIO;
                        return EAI_SYSTEM;
                }
        }
-
+       
        if (numerichost != 0)
        {
                if (encode_kv(&outxdr, "numerichost", "1") != 0)
                {
                        xdr_destroy(&outxdr);
-                       errno = EIO;
                        return EAI_SYSTEM;
                }
        }
@@ -618,7 +607,7 @@ gai_make_query(const char *nodename, const char *servname, const struct addrinfo
        *len = xdr_getpos(&outxdr);
 
        xdr_destroy(&outxdr);
-
+       
        return 0;
 }
 
@@ -817,16 +806,10 @@ gai_lookupd(const char *nodename, const char *servname, const struct addrinfo *h
        if (gai_proc < 0)
        {
                status = _lookup_link(server_port, "getaddrinfo", &gai_proc);
-               if (status != KERN_SUCCESS)
-               {
-                       errno = ECONNREFUSED;
-                       return EAI_SYSTEM;
-               }
+               if (status != KERN_SUCCESS) return EAI_SYSTEM;
        }
 
        qlen = LU_QBUF_SIZE;
-
-       /* gai_make_query sets errno if it fails */
        i = gai_make_query(nodename, servname, hints, qbuf, &qlen);
        if (i != 0) return EAI_SYSTEM;
 
@@ -844,7 +827,6 @@ gai_lookupd(const char *nodename, const char *servname, const struct addrinfo *h
        if (!xdr_int(&inxdr, (int32_t *)&n))
        {
                xdr_destroy(&inxdr);
-               errno = EIO;
                return EAI_SYSTEM;
        }
 
@@ -905,7 +887,7 @@ getaddrinfo(const char * __restrict nodename, const char * __restrict servname,
 
        servnull = 0;
        if ((servname == NULL) || (servname[0] == '\0')) servnull = 1;
-
+       
        if ((nodenull == 1) && (servnull == 1)) return EAI_NONAME;
        status = gai_checkhints(hints);
        if (status != 0) return status;
@@ -936,38 +918,21 @@ getaddrinfo_async_start(mach_port_t *p, const char *nodename, const char *servna
 
        server_port = MACH_PORT_NULL;
        if (_lu_running()) server_port = _lookupd_port(0);
-       if (server_port == MACH_PORT_NULL)
-       {
-               errno = ECONNREFUSED;
-               return EAI_SYSTEM;
-       }
+       if (server_port == MACH_PORT_NULL) return EAI_SYSTEM;
 
        if (gai_proc < 0)
        {
                status = _lookup_link(server_port, "getaddrinfo", &gai_proc);
-               if (status != KERN_SUCCESS)
-               {
-                       errno = ECONNREFUSED;
-                       return EAI_SYSTEM;
-               }
+               if (status != KERN_SUCCESS) return EAI_SYSTEM;
        }
 
        qlen = LU_QBUF_SIZE;
-
-       /* gai_make_query sets errno if it fails */
        i = gai_make_query(nodename, servname, hints, qbuf, &qlen);
        if (i != 0) return EAI_SYSTEM;
 
        qlen /= BYTES_PER_XDR_UNIT;
 
-       status = lu_async_start(p, gai_proc, qbuf, qlen, (void *)callback, context);
-       if (status != 0)
-       {
-               errno = ECONNREFUSED;
-               return EAI_SYSTEM;
-       }
-
-       return 0;
+       return lu_async_start(p, gai_proc, qbuf, qlen, (void *)callback, context);
 }
 
 int32_t
@@ -994,7 +959,6 @@ gai_extract_data(char *buf, uint32_t len, struct addrinfo **res)
        if (!xdr_int(&xdr, (int32_t *)&n))
        {
                xdr_destroy(&xdr);
-               errno = EIO;
                return EAI_SYSTEM;
        }
 
@@ -1116,17 +1080,9 @@ gni_lookupd_process_dictionary(XDR *inxdr, char **host, char **serv)
        int32_t i, j, nkeys, nvals, status;
        char *key, **vals;
 
-       if ((host == NULL) || (serv == NULL))
-       {
-               errno = EINVAL;
-               return EAI_SYSTEM;
-       }
+       if ((host == NULL) || (serv == NULL)) return EAI_SYSTEM;
 
-       if (!xdr_int(inxdr, &nkeys))
-       {
-               errno = EIO;
-               return EAI_SYSTEM;
-       }
+       if (!xdr_int(inxdr, &nkeys)) return EAI_SYSTEM;
 
        *host = NULL;
        *serv = NULL;
@@ -1136,13 +1092,9 @@ gni_lookupd_process_dictionary(XDR *inxdr, char **host, char **serv)
                key = NULL;
                vals = NULL;
                nvals = 0;
-
+               
                status = _lu_xdr_attribute(inxdr, &key, &vals, (uint32_t *)&nvals);
-               if (status < 0)
-               {
-                       errno = EIO;
-                       return EAI_SYSTEM;
-               }
+               if (status < 0) return EAI_SYSTEM;
 
                if (nvals == 0)
                {
@@ -1240,7 +1192,7 @@ gni_make_query(const struct sockaddr *sa, size_t salen, int wanthost, int wantse
                        ifnum = s6->sin6_addr.__u6_addr.__u6_addr16[1];
                        if (ifnum == 0) ifnum = s6->sin6_scope_id;
                        else if ((s6->sin6_scope_id != 0) && (ifnum != s6->sin6_scope_id)) return EAI_FAIL;
-
+                       
                        s6->sin6_addr.__u6_addr.__u6_addr16[1] = 0;
                        s6->sin6_scope_id = ifnum;
                        if ((ifnum != 0) && (flags & NI_NUMERICHOST)) flags |= NI_WITHSCOPEID;
@@ -1295,7 +1247,6 @@ gni_make_query(const struct sockaddr *sa, size_t salen, int wanthost, int wantse
        if (!xdr_int(&outxdr, (int32_t *)&na))
        {
                xdr_destroy(&outxdr);
-               errno = EIO;
                return EAI_SYSTEM;
        }
 
@@ -1316,7 +1267,6 @@ gni_make_query(const struct sockaddr *sa, size_t salen, int wanthost, int wantse
                if (encode_kv(&outxdr, key, str) != 0)
                {
                        xdr_destroy(&outxdr);
-                       errno = EIO;
                        return EAI_SYSTEM;
                }
        }
@@ -1327,7 +1277,6 @@ gni_make_query(const struct sockaddr *sa, size_t salen, int wanthost, int wantse
                if (encode_kv(&outxdr, "port", str) != 0)
                {
                        xdr_destroy(&outxdr);
-                       errno = EIO;
                        return EAI_SYSTEM;
                }
        }
@@ -1337,7 +1286,6 @@ gni_make_query(const struct sockaddr *sa, size_t salen, int wanthost, int wantse
                if (encode_kv(&outxdr, "protocol", "udp") != 0)
                {
                        xdr_destroy(&outxdr);
-                       errno = EIO;
                        return EAI_SYSTEM;
                }
        }
@@ -1347,7 +1295,6 @@ gni_make_query(const struct sockaddr *sa, size_t salen, int wanthost, int wantse
                if (encode_kv(&outxdr, "fqdn", "0") != 0)
                {
                        xdr_destroy(&outxdr);
-                       errno = EIO;
                        return EAI_SYSTEM;
                }
        }
@@ -1357,7 +1304,6 @@ gni_make_query(const struct sockaddr *sa, size_t salen, int wanthost, int wantse
                if (encode_kv(&outxdr, "numerichost", "1") != 0)
                {
                        xdr_destroy(&outxdr);
-                       errno = EIO;
                        return EAI_SYSTEM;
                }
        }
@@ -1367,7 +1313,6 @@ gni_make_query(const struct sockaddr *sa, size_t salen, int wanthost, int wantse
                if (encode_kv(&outxdr, "numericserv", "1") != 0)
                {
                        xdr_destroy(&outxdr);
-                       errno = EIO;
                        return EAI_SYSTEM;
                }
        }
@@ -1377,7 +1322,6 @@ gni_make_query(const struct sockaddr *sa, size_t salen, int wanthost, int wantse
                if (encode_kv(&outxdr, "name_required", "1") != 0)
                {
                        xdr_destroy(&outxdr);
-                       errno = EIO;
                        return EAI_SYSTEM;
                }
        }
@@ -1385,7 +1329,7 @@ gni_make_query(const struct sockaddr *sa, size_t salen, int wanthost, int wantse
        *len = xdr_getpos(&outxdr);
 
        xdr_destroy(&outxdr);
-
+       
        return 0;
 }
 
@@ -1447,7 +1391,7 @@ getnameinfo(const struct sockaddr * __restrict sa, socklen_t salen, char * __res
                        return i;
                }
        }
-
+               
        wanth = 0;
        if ((host != NULL) && (hostlen != 0)) wanth = 1;
 
@@ -1504,20 +1448,12 @@ getnameinfo(const struct sockaddr * __restrict sa, socklen_t salen, char * __res
         */
        server_port = MACH_PORT_NULL;
        if (_lu_running()) server_port = _lookupd_port(0);
-       if (server_port == MACH_PORT_NULL)
-       {
-               errno = ECONNREFUSED;
-               return EAI_SYSTEM;
-       }
+       if (server_port == MACH_PORT_NULL) return EAI_SYSTEM;
 
        if (gni_proc < 0)
        {
                status = _lookup_link(server_port, "getnameinfo", &gni_proc);
-               if (status != KERN_SUCCESS)
-               {
-                       errno = ECONNREFUSED;
-                       return EAI_SYSTEM;
-               }
+               if (status != KERN_SUCCESS) return EAI_SYSTEM;
        }
 
        qlen = LU_QBUF_SIZE;
@@ -1538,7 +1474,6 @@ getnameinfo(const struct sockaddr * __restrict sa, socklen_t salen, char * __res
        if (!xdr_int(&inxdr, (int32_t *)&n))
        {
                xdr_destroy(&inxdr);
-               errno = EIO;
                return EAI_SYSTEM;
        }
 
@@ -1592,20 +1527,12 @@ getnameinfo_async_start(mach_port_t *p, const struct sockaddr *sa, size_t salen,
 
        server_port = MACH_PORT_NULL;
        if (_lu_running()) server_port = _lookupd_port(0);
-       if (server_port == MACH_PORT_NULL)
-       {
-               errno = ECONNREFUSED;
-               return EAI_SYSTEM;
-       }
+       if (server_port == MACH_PORT_NULL) return EAI_SYSTEM;
 
        if (gni_proc < 0)
        {
                status = _lookup_link(server_port, "getnameinfo", &gni_proc);
-               if (status != KERN_SUCCESS)
-               {
-                       errno = ECONNREFUSED;
-                       return EAI_SYSTEM;
-               }
+               if (status != KERN_SUCCESS) return EAI_SYSTEM;
        }
 
        qlen = LU_QBUF_SIZE;
@@ -1614,14 +1541,7 @@ getnameinfo_async_start(mach_port_t *p, const struct sockaddr *sa, size_t salen,
 
        qlen /= BYTES_PER_XDR_UNIT;
 
-       status = lu_async_start(p, gni_proc, qbuf, qlen, (void *)callback, context);
-       if (status != 0)
-       {
-               errno = ECONNREFUSED;
-               return EAI_SYSTEM;
-       }
-
-       return 0;
+       return lu_async_start(p, gni_proc, qbuf, qlen, (void *)callback, context);
 }
 
 int32_t
@@ -1648,7 +1568,6 @@ gni_extract_data(char *buf, uint32_t len, char **host, char **serv)
        if (!xdr_int(&xdr, (int32_t *)&n))
        {
                xdr_destroy(&xdr);
-               errno = EIO;
                return EAI_SYSTEM;
        }
 
index cb62a7c636886b32f8e2fdeb10f1b0a03ecc2497..7d22d9196d01a361aa31d48a4d6d615e8f095d47 100644 (file)
@@ -305,7 +305,7 @@ lu_alias_getent(void)
                tdata = (struct lu_thread_info *)calloc(1, sizeof(struct lu_thread_info));
                _lu_data_set_key(_lu_data_key_alias, tdata);
        }
-
+\r
        if (tdata->lu_vm == NULL)
        {
                if (proc < 0)
index 9fe1b8472ff638df2bd2fb8eebf4203f1abbecc8..9594b7421829647d04b173c02f8ef7896886a9d1 100644 (file)
@@ -266,7 +266,7 @@ lu_bootparams_getent(void)
                tdata = (struct lu_thread_info *)calloc(1, sizeof(struct lu_thread_info));
                _lu_data_set_key(_lu_data_key_bootparams, tdata);
        }
-
+\r
        if (tdata->lu_vm == NULL)
        {
                if (proc < 0)
index 725255b4e7739c5866985caf07ba173c6ac446ad..be1d53220295b6cbdb9a2eaf246034d57e66ac6c 100644 (file)
@@ -297,7 +297,7 @@ lu_endfsent(void)
        struct lu_thread_info *tdata;
 
        tdata = _lu_data_create_key(_lu_data_key_fstab, free_lu_thread_info_fstab);
-       _lu_data_free_vm_xdr(tdata);
+       _lu_data_free_vm_xdr(tdata);\r
 }
 
 static int
@@ -320,7 +320,7 @@ lu_getfsent()
                tdata = (struct lu_thread_info *)calloc(1, sizeof(struct lu_thread_info));
                _lu_data_set_key(_lu_data_key_fstab, tdata);
        }
-
+\r
        if (tdata->lu_vm == NULL)
        {
                if (proc < 0)
index 117eaa2f1c6e8f8d7de53ce69746bf063d993ba7..ae183102da82038cade9e74b56c92ecb6a214cfb 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999-2007 Apple Computer, Inc. All rights reserved.
+ * Copyright (c) 1999-2002 Apple Computer, Inc. All rights reserved.
  *
  * @APPLE_LICENSE_HEADER_START@
  * 
@@ -64,7 +64,7 @@ static pthread_mutex_t _group_lock = PTHREAD_MUTEX_INITIALIZER;
 #define MEMBERD_NAME "com.apple.memberd"
 static mach_port_t mbr_port = MACH_PORT_NULL;
 typedef uint32_t GIDArray[16];
-extern kern_return_t _mbr_GetGroups(mach_port_t server, uint32_t uid, uint32_t *numGroups, GIDArray gids, security_token_t *token);
+extern kern_return_t _mbr_GetGroups(mach_port_t server, uint32_t uid, uint32_t *numGroups, GIDArray gids);
 
 #define GR_GET_NAME 1
 #define GR_GET_GID 2
@@ -104,7 +104,7 @@ free_lu_thread_info_group(void *x)
        if (x == NULL) return;
 
        tdata = (struct lu_thread_info *)x;
-
+       
        if (tdata->lu_entry != NULL)
        {
                free_group((struct group *)tdata->lu_entry);
@@ -290,7 +290,7 @@ copy_group_r(struct group *in, struct group *out, char *buffer, int buflen)
                        ap += hsize;
                }
        }
-
+       
        memset(bp, 0, sizeof(unsigned long));
        bp = ap;
 
@@ -458,7 +458,7 @@ lu_getgrgid(int gid)
        static int proc = -1;
        int count;
        char *lookup_buf;
-
+       
        if (proc < 0)
        {
                if (_lookup_link(_lu_port, "getgrgid", &proc) != KERN_SUCCESS)
@@ -675,7 +675,6 @@ mbr_getgrouplist(const char *name, int basegid, int *groups, int *grpcnt, int du
        int pwstatus;
        GIDArray gids;
        int status, maxgroups;
-       security_token_t token;
 
        status = 0;
 
@@ -700,13 +699,9 @@ mbr_getgrouplist(const char *name, int basegid, int *groups, int *grpcnt, int du
        if (pwstatus != 0) return status;
        if (res == NULL) return status;
 
-       token.val[0] = -1;
-       token.val[1] = -1;
-
        count = 0;
-       kstatus = _mbr_GetGroups(mbr_port, p.pw_uid, &count, gids, &token);
+       kstatus = _mbr_GetGroups(mbr_port, p.pw_uid, &count, gids);
        if (kstatus != KERN_SUCCESS) return status;
-       if (token.val[0] != 0) return KERN_FAILURE;
 
        for (i = 0; (i < count) && (status == 0); i++) 
        {
@@ -734,7 +729,7 @@ lu_getgrouplist(const char *name, int basegid, int *groups, int *grpcnt, int dup
        if (name == NULL) return status;
        if (groups == NULL) return status;
        if (grpcnt == NULL) return status;
-
+       
        maxgroups = *grpcnt;
        *grpcnt = 0;
 
@@ -797,12 +792,12 @@ getgrouplist_internal(const char *name, int basegid, int *groups, int *grpcnt, i
        {
                return mbr_getgrouplist(name, basegid, groups, grpcnt, dupbase);
        }
-
+       
        if (_lu_running())
        {
                return lu_getgrouplist(name, basegid, groups, grpcnt, dupbase);
        }
-
+       
        return _old_getgrouplist(name, basegid, groups, grpcnt);
 }
 
@@ -841,7 +836,7 @@ lu_getgrent()
                tdata = (struct lu_thread_info *)calloc(1, sizeof(struct lu_thread_info));
                _lu_data_set_key(_lu_data_key_group, tdata);
        }
-
+       
        if (tdata->lu_vm == NULL)
        {
                if (proc < 0)
@@ -891,7 +886,7 @@ lu_getgrent()
        }
 
        tdata->lu_vm_cursor--;
-
+       
        return g;
 }
 
index 962c434bba3b91f10e76cdb2c4449b74a7f26fd7..d9d178efaf23be50c2ffef851ddb1b1a074d94e4 100644 (file)
@@ -649,7 +649,6 @@ lu_gethostbyaddr(const char *addr, int want, int *err)
        if (family == AF_INET)
        {
                memmove(&(addr4.s_addr), addr, IPV4_ADDR_LEN);
-               addr4.s_addr = htonl(addr4.s_addr);
                address = (char *)&(addr4.s_addr);
                proc = proc4;
        }
index bdf6796c9b1f39fc196d1f5f1955e6aaefd34e2e..6b5047133024b67331d85985a02a8ae7b7edbe76 100644 (file)
@@ -379,7 +379,6 @@ _gethostbyaddr_async_start(const char *addr, int len, int type, a_request_callou
 
                        v4addr = malloc(len);
                        memmove(v4addr, addr, len);
-                       v4addr->s_addr = htonl(v4addr->s_addr);
 
                        address = (void *)v4addr;
                        proc = proc4;
index 8f9a5519d1198127b51d86b20abd3271049e0f8d..db1ba65a2f747e48ced9509531430acb71b65e11 100644 (file)
@@ -357,7 +357,7 @@ lu_endnetent()
        struct lu_thread_info *tdata;
 
        tdata = _lu_data_create_key(_lu_data_key_network, free_lu_thread_info_network);
-       _lu_data_free_vm_xdr(tdata);
+       _lu_data_free_vm_xdr(tdata);\r
 }
 
 static void
@@ -379,7 +379,7 @@ lu_getnetent()
                tdata = (struct lu_thread_info *)calloc(1, sizeof(struct lu_thread_info));
                _lu_data_set_key(_lu_data_key_network, tdata);
        }
-
+\r
        if (tdata->lu_vm == NULL)
        {
                if (proc < 0)
index e455b4cc1ded4607f15da93f2c1b79ad901966d7..86fd0b7d2a2f94943af8e076850a31a247847902 100644 (file)
@@ -334,7 +334,7 @@ lu_prdb_get()
                tdata = (struct lu_thread_info *)calloc(1, sizeof(struct lu_thread_info));
                _lu_data_set_key(_lu_data_key_printer, tdata);
        }
-
+\r
        if (tdata->lu_vm == NULL)
        {
                if (proc < 0)
index e91932d9dce1ac2a40ed03812c4737ac8c91362f..a6a04519b77d6b1cda0b1f0da7933eba80f31893 100644 (file)
@@ -363,7 +363,7 @@ lu_getprotoent()
                tdata = (struct lu_thread_info *)calloc(1, sizeof(struct lu_thread_info));
                _lu_data_set_key(_lu_data_key_protocol, tdata);
        }
-
+\r
        if (tdata->lu_vm == NULL)
        {
                if (proc < 0)
index 53812017bf847b9d4951ef1cf33b75914c398d7a..368908768b24ae557def536ed1787c5ec525ecde 100644 (file)
@@ -361,7 +361,7 @@ lu_getrpcent()
                tdata = (struct lu_thread_info *)calloc(1, sizeof(struct lu_thread_info));
                _lu_data_set_key(_lu_data_key_rpc, tdata);
        }
-
+\r
        if (tdata->lu_vm == NULL)
        {
                if (proc < 0)
index 3362147edd924363bc0785594b3db5423d410919..5970cf20bbf63e14c2ca5a6b74624f5aabc2b80f 100644 (file)
@@ -303,6 +303,12 @@ _lu_create_request(uint32_t proc, const char *buf, uint32_t len, void *callback,
        r->proc = proc;
 
        r->request_buffer = malloc(len * BYTES_PER_XDR_UNIT);
+       if (r->request_buffer == NULL)
+       {
+               free(r);
+               return NULL;
+       }
+
        memcpy(r->request_buffer, buf, len * BYTES_PER_XDR_UNIT);
        r->request_buffer_len = len;
 
@@ -417,6 +423,8 @@ _lookupd_xdr_dictionary(XDR *inxdr)
        if (!xdr_int(inxdr, &nkeys)) return NULL;
 
        l = (ni_proplist *)malloc(sizeof(ni_proplist));
+       if (l == NULL) return NULL;
+
        NI_INIT(l);
 
        l->ni_proplist_len = nkeys;
@@ -424,6 +432,11 @@ _lookupd_xdr_dictionary(XDR *inxdr)
        if (nkeys > 0)
        {
                l->ni_proplist_val = (ni_property *)calloc(nkeys, sizeof(ni_property));
+               if (l->ni_proplist_val == NULL)
+               {
+                       free(l);
+                       return NULL;
+               }
        }
 
        for (i = 0; i < nkeys; i++)
@@ -447,6 +460,11 @@ _lookupd_xdr_dictionary(XDR *inxdr)
                if (nvals > 0)
                {
                        l->ni_proplist_val[i].nip_val.ni_namelist_val = (ni_name *)calloc(nvals, sizeof(ni_name));
+                       if (l->ni_proplist_val[i].nip_val.ni_namelist_val == NULL)
+                       {
+                               ni_proplist_free(l);
+                               return NULL;
+                       }
                }
 
                for (j = 0; j < nvals; j++)
@@ -552,6 +570,11 @@ lookupd_query(ni_proplist *l, ni_proplist ***out)
        }
 
        *out = (ni_proplist **)malloc(n * sizeof(ni_proplist *));
+       if (out == NULL)
+       {
+               xdr_destroy(&inxdr);
+               return 0;
+       }
 
        for (i = 0; i < n; i++)
        {
@@ -578,6 +601,8 @@ lookupd_make_query(char *cat, char *fmt, ...)
        if (fmt[0] != 'k') return NULL;
 
        l = (ni_proplist *)malloc(sizeof(ni_proplist));
+       if (l == NULL) return NULL;
+
        NI_INIT(l);
 
        na = 0;
@@ -586,13 +611,36 @@ lookupd_make_query(char *cat, char *fmt, ...)
        if (cat != NULL)
        {
                l->ni_proplist_val = (ni_property *)malloc(sizeof(ni_property));
+               if (l->ni_proplist_val == NULL)
+               {
+                       free(l);
+                       return NULL;
+               }
+
                p = &(l->ni_proplist_val[0]);
                arg = "_lookup_category";
                p->nip_name = strdup(arg);
+               if (p->nip_name == NULL)
+               {
+                       ni_proplist_free(l);
+                       return NULL;
+               }
+               
                p->nip_val.ni_namelist_len = 1;
                p->nip_val.ni_namelist_val = (ni_name *)malloc(sizeof(ni_name));
+               if (p->nip_val.ni_namelist_val == NULL)
+               {
+                       ni_proplist_free(l);
+                       return NULL;
+               }
+                       
                p->nip_val.ni_namelist_val[0] = strdup(cat);
-
+               if (p->nip_val.ni_namelist_val[0] == NULL)
+               {
+                       ni_proplist_free(l);
+                       return NULL;
+               }
+               
                l->ni_proplist_len++;
                x++;
        }
@@ -603,10 +651,21 @@ lookupd_make_query(char *cat, char *fmt, ...)
                arg = va_arg(ap, char *);
                if (*f == 'k')
                {
-                       l->ni_proplist_val = (ni_property *)realloc(l->ni_proplist_val, (l->ni_proplist_len + 1) * sizeof(ni_property));
-
+                       l->ni_proplist_val = (ni_property *)reallocf(l->ni_proplist_val, (l->ni_proplist_len + 1) * sizeof(ni_property));
+                       if (l->ni_proplist_val == NULL)
+                       {
+                               ni_proplist_free(l);
+                               return NULL;
+                       }
+                       
                        p = &(l->ni_proplist_val[l->ni_proplist_len]);
                        p->nip_name = strdup(arg);
+                       if (p->nip_name == NULL)
+                       {
+                               ni_proplist_free(l);
+                               return NULL;
+                       }
+
                        p->nip_val.ni_namelist_len = 0;
                        p->nip_val.ni_namelist_val = NULL;
 
@@ -622,9 +681,22 @@ lookupd_make_query(char *cat, char *fmt, ...)
                        }
                        else
                        {
-                               p->nip_val.ni_namelist_val = (ni_name *)realloc(p->nip_val.ni_namelist_val, (p->nip_val.ni_namelist_len + 1) * sizeof(ni_name));
+                               p->nip_val.ni_namelist_val = (ni_name *)reallocf(p->nip_val.ni_namelist_val, (p->nip_val.ni_namelist_len + 1) * sizeof(ni_name));
+                       }
+
+                       if (p->nip_val.ni_namelist_val == NULL)
+                       {
+                               ni_proplist_free(l);
+                               return NULL;
                        }
+
                        p->nip_val.ni_namelist_val[p->nip_val.ni_namelist_len] = strdup(arg);
+                       if (p->nip_val.ni_namelist_val[p->nip_val.ni_namelist_len] == NULL)
+                       {
+                               ni_proplist_free(l);
+                               return NULL;
+                       }
+
                        p->nip_val.ni_namelist_len++;
                }
        }
@@ -651,8 +723,17 @@ ni_property_merge(ni_property *a, ni_property *b)
 
                if (addme == 1)
                {
-                       a->nip_val.ni_namelist_val = (ni_name *)realloc(a->nip_val.ni_namelist_val, (a->nip_val.ni_namelist_len + 1) * sizeof(ni_name));
+                       a->nip_val.ni_namelist_val = (ni_name *)reallocf(a->nip_val.ni_namelist_val, (a->nip_val.ni_namelist_len + 1) * sizeof(ni_name));
+                       if (a->nip_val.ni_namelist_val == NULL) return;
+
                        a->nip_val.ni_namelist_val[a->nip_val.ni_namelist_len] = strdup(b->nip_val.ni_namelist_val[j]);
+                       if (a->nip_val.ni_namelist_val[a->nip_val.ni_namelist_len] == NULL)
+                       {
+                               free(a->nip_val.ni_namelist_val);
+                               a->nip_val.ni_namelist_val = NULL;
+                               return;
+                       }
+
                        a->nip_val.ni_namelist_len++;
                }
        }
@@ -676,8 +757,17 @@ ni_proplist_merge(ni_proplist *a, ni_proplist *b)
                }
                if (addme == 1)
                {
-                       a->ni_proplist_val = (ni_property *)realloc(a->ni_proplist_val, (a->ni_proplist_len + 1) * sizeof(ni_property));
+                       a->ni_proplist_val = (ni_property *)reallocf(a->ni_proplist_val, (a->ni_proplist_len + 1) * sizeof(ni_property));
+                       if (a->ni_proplist_val == NULL) return;
+
                        a->ni_proplist_val[a->ni_proplist_len].nip_name = strdup(b->ni_proplist_val[wb].nip_name);
+                       if (a->ni_proplist_val[a->ni_proplist_len].nip_name == NULL)
+                       {
+                               free(a->ni_proplist_val);
+                               a->ni_proplist_val = NULL;
+                               return NULL;
+                       }
+       
                        a->ni_proplist_val[a->ni_proplist_len].nip_val.ni_namelist_len = 0;
                        a->ni_proplist_val[a->ni_proplist_len].nip_val.ni_namelist_val = NULL;
                        a->ni_proplist_len++;
@@ -751,6 +841,7 @@ _lu_data_get()
        if (libinfo_data != NULL) return libinfo_data;
 
        libinfo_data = (struct _lu_data_s *)calloc(1, sizeof(struct _lu_data_s));
+       if (libinfo_data == NULL) return NULL;
 
        pthread_setspecific(_info_key, libinfo_data);
        return libinfo_data;
@@ -763,6 +854,7 @@ _lu_data_create_key(unsigned int key, void (*destructor)(void *))
        unsigned int i, n;
 
        libinfo_data = _lu_data_get();
+       if (libinfo_data == NULL) return NULL;
 
        for (i = 0; i < libinfo_data->icount; i++)
        {
@@ -780,9 +872,17 @@ _lu_data_create_key(unsigned int key, void (*destructor)(void *))
        }
        else
        {
-               libinfo_data->ikey = (unsigned int *)realloc(libinfo_data->ikey, n * sizeof(unsigned int));
-               libinfo_data->idata = (void **)realloc(libinfo_data->idata, n * sizeof(void *));
-               libinfo_data->idata_destructor = (void (**)(void *))realloc(libinfo_data->idata_destructor, n * sizeof(void (*)(void *)));
+               libinfo_data->ikey = (unsigned int *)reallocf(libinfo_data->ikey, n * sizeof(unsigned int));
+               libinfo_data->idata = (void **)reallocf(libinfo_data->idata, n * sizeof(void *));
+               libinfo_data->idata_destructor = (void (**)(void *))reallocf(libinfo_data->idata_destructor, n * sizeof(void (*)(void *)));
+       }
+
+       if ((libinfo_data->ikey == NULL) || (libinfo_data->idata == NULL) || (libinfo_data->idata_destructor == NULL))
+       {
+               if (libinfo_data->ikey != NULL) free(libinfo_data->ikey);
+               if (libinfo_data->idata != NULL) free(libinfo_data->idata);
+               if (libinfo_data->idata_destructor != NULL) free(libinfo_data->idata_destructor);
+               return NULL;
        }
 
        libinfo_data->ikey[i] = key;
@@ -815,6 +915,7 @@ _lu_data_set_key(unsigned int key, void *data)
        unsigned int i;
 
        libinfo_data = _lu_data_get();
+       if (libinfo_data == NULL) return;
 
        i = _lu_data_index(key, libinfo_data);
        if (i == (unsigned int)-1) return;
@@ -829,6 +930,7 @@ _lu_data_get_key(unsigned int key)
        unsigned int i;
 
        libinfo_data = _lu_data_get();
+       if (libinfo_data == NULL) return NULL;
 
        i = _lu_data_index(key, libinfo_data);
        if (i == (unsigned int)-1) return NULL;
@@ -885,6 +987,8 @@ _lu_xdr_attribute(XDR *xdr, char **key, char ***val, unsigned int *count)
        *count = len;
 
        x = (char **)calloc(len + 1, sizeof(char *));
+       if (x == NULL) return -1;
+
        *val = x;
 
        for (i = 0; i < len; i++)
index cd6cb55d4401ce2857b138f25940214229123a5f..e2e4fc1ef7cff51d05615e753770352c8e3441a6 100644 (file)
     Change History (most recent first):
 
 $Log: dnssd_clientstub.c,v $
-Revision 1.20.68.3  2006/05/02 16:16:08  majka
+Revision 1.20.70.3  2006/05/02 16:17:04  majka
 Make NumTries unsigned.
 
-Revision 1.20.68.2  2006/05/01 21:41:19  majka
-Additional change (make NumTries static) for 4374646.
-SUTiLondon Libinfo-222.3.3
+Revision 1.20.70.2  2006/05/01 21:43:09  majka
+Additional change (make NumTries static) for 4527193
+SUChardLondon Libinfo-222.4.6
 
-Revision 1.20.68.1  2006/05/01 16:22:28  majka
-Libinfo-222_3_2 is equivalent to SUTiLondon8J109 Libinfo-222.2
+Revision 1.20.70.1  2006/05/01 16:10:54  majka
+Libinfo-222_4_5 is equivalent to Chardonnay Libinfo-222.0.5
 
-Revision 1.20.64.1  2006/04/27 21:19:51  majka
-Bug #: 4374646
+Revision 1.20.60.1  2006/04/27 21:33:30  majka
+Integrated 4527193
 
 Revision 1.20  2005/02/03 00:39:05  majka
 Integrated 3942900
@@ -47,6 +47,9 @@ Integrated 3942900
 Revision 1.19.4.1  2005/02/02 00:47:40  ksekar
 <rdar://problem/3942900> dnd-sd shows the wrong port numbers
 
+Revision 1.19  2004/12/23 23:10:59  majka
+*** empty log message ***
+
 Revision 1.18.8.1  2004/12/23 17:32:56  ksekar
 <rdar://problem/3931319> Rendevzous calls leak sockets if mDNSResponder is not running
 
index cecfd463826dc36b6f4cb723a8568ee3ff886354..ccdcd25a0fa98d7d4785260852d210f922f8c243 100644 (file)
@@ -183,7 +183,7 @@ typedef union
     uint32_t ptr64[2];
     } client_context_t;
 
-typedef struct __attribute__((__packed__)) ipc_msg_hdr_struct
+typedef struct ipc_msg_hdr_struct
     {
     uint32_t version;
     uint32_t datalen;
index 1c25c31756c96b3138535e50a3bfeba7c2c4e4dd..8067127fad3f29bb183c5210d42fbaffa6ce6cd9 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004-2007 Apple Computer, Inc. All rights reserved.
+ * Copyright (c) 2004-2005 Apple Computer, Inc. All rights reserved.
  *
  * @APPLE_LICENSE_HEADER_START@
  *
@@ -26,11 +26,10 @@ subsystem memberd 8000;
 serverprefix Server;
 
 #include <mach/std_types.defs>
-#include <mach/mach_types.defs>
 import "memberd_defines.h";
 
-type kauth_identity_extlookup = struct [50] of integer_t;
-type guid_t = struct [4] of uint32_t;
+type kauth_identity_extlookup = struct [200] of uint8_t;
+type guid_t = struct [16] of uint8_t;
 
 type StatBlock = struct [16] of uint32_t;
 
@@ -38,53 +37,30 @@ type GIDArray = array [16] of uint32_t;
 
 type string = c_string[*:256];
 
-routine _mbr_DoMembershipCall
-(
-       server: mach_port_t;
-       inout request: kauth_identity_extlookup;
-       UserSecToken token : security_token_t
-);
+routine _mbr_DoMembershipCall(
+                               server: mach_port_t;
+               inout   request: kauth_identity_extlookup);
 
-routine _mbr_GetStats
-(
-       server: mach_port_t;
-       out stats: StatBlock;
-       UserSecToken token : security_token_t
-);
+routine _mbr_GetStats(
+                               server: mach_port_t;
+               out             stats: StatBlock);
 
-routine _mbr_ClearStats
-(
-       server: mach_port_t;
-       UserSecToken token : security_token_t
-);
+routine _mbr_ClearStats( server: mach_port_t );
 
-routine _mbr_MapName
-(
-       server: mach_port_t;
-       in isUser: uint8_t;
-       in name: string;
-       out guid: guid_t;
-       UserSecToken token : security_token_t
-);
+routine _mbr_MapName(
+                               server:         mach_port_t;
+               in              isUser:         uint8_t;
+               in              name:           string;
+               out             guid:           guid_t );
 
-routine _mbr_GetGroups
-(
-       server: mach_port_t;
-       in uid: uint32_t;
-       out numGroups: uint32_t;
-       out gids: GIDArray;
-       UserSecToken token : security_token_t
-);
-routine _mbr_ClearCache
-(
-       server: mach_port_t;
-       UserSecToken token : security_token_t
-);
+routine _mbr_GetGroups(
+                               server:         mach_port_t;
+               in              uid:            uint32_t;
+               out             numGroups:  uint32_t;
+               out             gids:           GIDArray );
+               
+routine _mbr_ClearCache( server: mach_port_t );
 
-routine _mbr_DumpState
-(
-       server: mach_port_t;
-       in logOnly: uint8_t;
-       UserSecToken token : security_token_t
-);
+routine _mbr_DumpState(
+                               server:         mach_port_t;
+               in              logOnly:        uint8_t );
index d5ff613f2237c38d63aa1a1d618bbdd4e546ce78..de0165352e09452776e41b62c7f57be717f66b52 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004-2007 Apple Computer, Inc. All rights reserved.
+ * Copyright (c) 2004 Apple Computer, Inc. All rights reserved.
  *
  * @APPLE_LICENSE_HEADER_START@
  *
 #include <servers/bootstrap.h>
 #include <mach/mach.h>
 #include <stdlib.h>
-#include <libkern/OSByteOrder.h>
+#import <libkern/OSByteOrder.h>
 
 static mach_port_t GetServerPort()
 {
        kern_return_t result;
-       static mach_port_t bsPort = 0;
-       static mach_port_t fServerPort = 0;
-
+       static mach_port_t              bsPort = 0;
+       static mach_port_t              fServerPort = 0;
+       
        if (bsPort == 0)
        {
-               result = task_get_bootstrap_port(mach_task_self(), &bsPort);
-               result = bootstrap_look_up(bsPort, "com.apple.memberd", &fServerPort);
+               result = task_get_bootstrap_port( mach_task_self(), &bsPort );
+               result = bootstrap_look_up( bsPort, "com.apple.memberd", &fServerPort );
+
+//             if the port lookup failed, the rpc will fail and we will return EIO
+//             if (result != MACH_MSG_SUCCESS)
+//             {
+//                     printf("Got error %d on lookup (is memberd running?)\n", result);
+//             }
        }
 
        return fServerPort;
@@ -48,18 +54,15 @@ static mach_port_t GetServerPort()
 int mbr_uid_to_uuid(uid_t id, uuid_t uu)
 {
        struct kauth_identity_extlookup request;
-       security_token_t token;
        int result = 0;
 
-       token.val[0] = -1;
-       token.val[1] = -1;
-
+       request.el_seqno = 1;  // used as byte order field
        request.el_flags = KAUTH_EXTLOOKUP_VALID_UID | KAUTH_EXTLOOKUP_WANT_UGUID;
        request.el_uid = id;
-       result = _mbr_DoMembershipCall(GetServerPort(), &request, &token);
-       if (result != KERN_SUCCESS) return EIO;
-       if (token.val[0] != 0) return EAUTH;
-
+       result = _mbr_DoMembershipCall(GetServerPort(), &request);
+       if (result != KERN_SUCCESS)
+               return EIO;
+               
        if ((request.el_flags & KAUTH_EXTLOOKUP_VALID_UGUID) != 0)
                memcpy(uu, &request.el_uguid, sizeof(guid_t));
        else
@@ -71,44 +74,39 @@ int mbr_uid_to_uuid(uid_t id, uuid_t uu)
 int mbr_gid_to_uuid(gid_t id, uuid_t uu)
 {
        struct kauth_identity_extlookup request;
-       security_token_t token;
        kern_return_t result;
        int error = 0;
 
-       token.val[0] = -1;
-       token.val[1] = -1;
-
+       request.el_seqno = 1;  // used as byte order field
        request.el_flags = KAUTH_EXTLOOKUP_VALID_GID | KAUTH_EXTLOOKUP_WANT_GGUID;
        request.el_gid = id;
-       result = _mbr_DoMembershipCall(GetServerPort(), &request, &token);
-       if (result != KERN_SUCCESS) return EIO;
-       if (token.val[0] != 0) return EAUTH;
-
+       result = _mbr_DoMembershipCall(GetServerPort(), &request);
+       if (result != KERN_SUCCESS)
+               return EIO;
+               
        if ((request.el_flags & KAUTH_EXTLOOKUP_VALID_GGUID) != 0)
                memcpy(uu, &request.el_gguid, sizeof(guid_t));
        else
                error = ENOENT;
-
+               
        return error;
 }
 
-int mbr_uuid_to_id(const uuid_t uu, uid_t *id, int *id_type)
+int mbr_uuid_to_id( const uuid_t uu, uid_t* id, int* id_type)
 {
        struct kauth_identity_extlookup request;
-       security_token_t token;
        kern_return_t result;
        int error = 0;
 
-       token.val[0] = -1;
-       token.val[1] = -1;
-
-       request.el_flags = KAUTH_EXTLOOKUP_VALID_UGUID | KAUTH_EXTLOOKUP_VALID_GGUID | KAUTH_EXTLOOKUP_WANT_UID | KAUTH_EXTLOOKUP_WANT_GID;
+       request.el_seqno = 1;  // used as byte order field
+       request.el_flags = KAUTH_EXTLOOKUP_VALID_UGUID | KAUTH_EXTLOOKUP_VALID_GGUID |
+                                               KAUTH_EXTLOOKUP_WANT_UID | KAUTH_EXTLOOKUP_WANT_GID;
        memcpy(&request.el_uguid, uu, sizeof(guid_t));
        memcpy(&request.el_gguid, uu, sizeof(guid_t));
-       result = _mbr_DoMembershipCall(GetServerPort(), &request, &token);
-       if (result != KERN_SUCCESS) return EIO;
-       if (token.val[0] != 0) return EAUTH;
-
+       result = _mbr_DoMembershipCall(GetServerPort(), &request);
+       if (result != KERN_SUCCESS)
+               return EIO;
+               
        if ((request.el_flags & KAUTH_EXTLOOKUP_VALID_UID) != 0)
        {
                *id = request.el_uid;
@@ -120,242 +118,215 @@ int mbr_uuid_to_id(const uuid_t uu, uid_t *id, int *id_type)
                *id_type = ID_TYPE_GID;
        }
        else
-       {
                error = ENOENT;
-       }
-
+               
        return error;
 }
 
-int mbr_sid_to_uuid(const nt_sid_t *sid, uuid_t uu)
+int mbr_sid_to_uuid(const nt_sid_tsid, uuid_t uu)
 {
        struct kauth_identity_extlookup request;
-       security_token_t token;
        kern_return_t result;
        int error = 0;
 
-       token.val[0] = -1;
-       token.val[1] = -1;
-
+       request.el_seqno = 1;  // used as byte order field
        request.el_flags = KAUTH_EXTLOOKUP_VALID_GSID | KAUTH_EXTLOOKUP_WANT_GGUID;
        memset(&request.el_gsid, 0, sizeof(ntsid_t));
        memcpy(&request.el_gsid, sid, KAUTH_NTSID_SIZE(sid));
-       result = _mbr_DoMembershipCall(GetServerPort(), &request, &token);
-       if (result != KERN_SUCCESS) return EIO;
-       if (token.val[0] != 0) return EAUTH;
-
+       result = _mbr_DoMembershipCall(GetServerPort(), &request);
+       if (result != KERN_SUCCESS)
+               return EIO;
+               
        if ((request.el_flags & KAUTH_EXTLOOKUP_VALID_GGUID) != 0)
                memcpy(uu, &request.el_gguid, sizeof(guid_t));
        else
                error = ENOENT;
-
+               
        return error;
 }
 
-int mbr_uuid_to_sid(const uuid_t uu, nt_sid_t *sid)
+int mbr_uuid_to_sid(const uuid_t uu, nt_sid_tsid)
 {
        struct kauth_identity_extlookup request;
-       security_token_t token;
        kern_return_t result;
        int error = 0;
 
-       token.val[0] = -1;
-       token.val[1] = -1;
-
+       request.el_seqno = 1;  // used as byte order field
        request.el_flags = KAUTH_EXTLOOKUP_VALID_GGUID | KAUTH_EXTLOOKUP_WANT_GSID;
        memcpy(&request.el_gguid, uu, sizeof(guid_t));
-       result = _mbr_DoMembershipCall(GetServerPort(), &request, &token);
-       if (result != KERN_SUCCESS) return EIO;
-       if (token.val[0] != 0) return EAUTH;
-
+       result = _mbr_DoMembershipCall(GetServerPort(), &request);
+       if (result != KERN_SUCCESS)
+               return EIO;
+               
        if ((request.el_flags & KAUTH_EXTLOOKUP_VALID_GSID) != 0)
                memcpy(sid, &request.el_gsid, sizeof(nt_sid_t));
        else
                error = ENOENT;
-
+               
        return error;
 }
 
-int mbr_check_membership(uuid_t user, uuid_t group, int *ismember)
+int mbr_check_membership(uuid_t user, uuid_t group, intismember)
 {
        struct kauth_identity_extlookup request;
-       security_token_t token;
        kern_return_t result;
        int error = 0;
 
-       token.val[0] = -1;
-       token.val[1] = -1;
-
-       request.el_flags = KAUTH_EXTLOOKUP_VALID_UGUID | KAUTH_EXTLOOKUP_VALID_GGUID | KAUTH_EXTLOOKUP_WANT_MEMBERSHIP;
+       request.el_seqno = 1;  // used as byte order field
+       request.el_flags = KAUTH_EXTLOOKUP_VALID_UGUID | KAUTH_EXTLOOKUP_VALID_GGUID |
+                                               KAUTH_EXTLOOKUP_WANT_MEMBERSHIP;
        memcpy(&request.el_uguid, user, sizeof(guid_t));
        memcpy(&request.el_gguid, group, sizeof(guid_t));
-       result = _mbr_DoMembershipCall(GetServerPort(), &request, &token);
-       if (result != KERN_SUCCESS) return EIO;
-       if (token.val[0] != 0) return EAUTH;
-
+       result = _mbr_DoMembershipCall(GetServerPort(), &request);
+       if (result != KERN_SUCCESS)
+               return EIO;
+               
        if ((request.el_flags & KAUTH_EXTLOOKUP_VALID_MEMBERSHIP) != 0)
+       {
                *ismember = ((request.el_flags & KAUTH_EXTLOOKUP_ISMEMBER) != 0);
+       }
        else
                error = ENOENT;
-
+               
        return error;
 }
 
-int mbr_check_membership_refresh(uuid_t user, uuid_t group, int *ismember)
+int mbr_check_membership_refresh(uuid_t user, uuid_t group, intismember)
 {
        struct kauth_identity_extlookup request;
-       security_token_t token;
        kern_return_t result;
        int error = 0;
 
-       token.val[0] = -1;
-       token.val[1] = -1;
-
-       request.el_flags = KAUTH_EXTLOOKUP_VALID_UGUID | KAUTH_EXTLOOKUP_VALID_GGUID | KAUTH_EXTLOOKUP_WANT_MEMBERSHIP | (1 << 15);
+       request.el_seqno = 1;  // used as byte order field
+       request.el_flags = KAUTH_EXTLOOKUP_VALID_UGUID | KAUTH_EXTLOOKUP_VALID_GGUID |
+                                               KAUTH_EXTLOOKUP_WANT_MEMBERSHIP | (1<<15);
        memcpy(&request.el_uguid, user, sizeof(guid_t));
        memcpy(&request.el_gguid, group, sizeof(guid_t));
-       result = _mbr_DoMembershipCall(GetServerPort(), &request, &token);
-       if (result != KERN_SUCCESS) return EIO;
-       if (token.val[0] != 0) return EAUTH;
-
+       result = _mbr_DoMembershipCall(GetServerPort(), &request);
+       if (result != KERN_SUCCESS)
+               return EIO;
+               
        if ((request.el_flags & KAUTH_EXTLOOKUP_VALID_MEMBERSHIP) != 0)
+       {
                *ismember = ((request.el_flags & KAUTH_EXTLOOKUP_ISMEMBER) != 0);
+       }
        else
                error = ENOENT;
-
+               
        return error;
 }
 
-int mbr_check_membership_by_id(uuid_t user, gid_t group, int *ismember)
+int mbr_check_membership_by_id(uuid_t user, gid_t group, intismember)
 {
        struct kauth_identity_extlookup request;
-       security_token_t token;
        kern_return_t result;
        int error = 0;
 
-       token.val[0] = -1;
-       token.val[1] = -1;
-
-       request.el_flags = KAUTH_EXTLOOKUP_VALID_UGUID | KAUTH_EXTLOOKUP_VALID_GID | KAUTH_EXTLOOKUP_WANT_MEMBERSHIP;
+       request.el_seqno = 1;  // used as byte order field
+       request.el_flags = KAUTH_EXTLOOKUP_VALID_UGUID | KAUTH_EXTLOOKUP_VALID_GID |
+                                               KAUTH_EXTLOOKUP_WANT_MEMBERSHIP;
        memcpy(&request.el_uguid, user, sizeof(guid_t));
        request.el_gid = group;
-       result = _mbr_DoMembershipCall(GetServerPort(), &request, &token);
-       if (result != KERN_SUCCESS) return EIO;
-       if (token.val[0] != 0) return EAUTH;
-
+       result = _mbr_DoMembershipCall(GetServerPort(), &request);
+       if (result != KERN_SUCCESS)
+               return EIO;
+               
        if ((request.el_flags & KAUTH_EXTLOOKUP_VALID_MEMBERSHIP) != 0)
+       {
                *ismember = ((request.el_flags & KAUTH_EXTLOOKUP_ISMEMBER) != 0);
+       }
        else
                error = ENOENT;
-
+               
        return error;
 }
 
 int mbr_reset_cache()
 {
-       security_token_t token;
        kern_return_t result;
-
-       token.val[0] = -1;
-       token.val[1] = -1;
-
-       result = _mbr_ClearCache(GetServerPort(), &token);
-       if (result != KERN_SUCCESS) return EIO;
-       if (token.val[0] != 0) return EAUTH;
-
+       result = _mbr_ClearCache(GetServerPort());
+       if (result != KERN_SUCCESS)
+               return EIO;
        return 0;
 }
 
-int mbr_user_name_to_uuid(const char *name, uuid_t uu)
+int mbr_user_name_to_uuid(const charname, uuid_t uu)
 {
-       security_token_t token;
        kern_return_t result;
-
-       if (name == NULL) return EINVAL;
-       if (strlen(name) > 255) return EINVAL;
-
-       token.val[0] = -1;
-       token.val[1] = -1;
-
-       result = _mbr_MapName(GetServerPort(), 1, (char *)name, (guid_t *)uu, &token);
-       if (result == KERN_FAILURE) return ENOENT;
-       else if (result != KERN_SUCCESS) return EIO;
-
-       if (token.val[0] != 0) return EAUTH;
-
+       
+       if (strlen(name) > 255)
+               return EINVAL;
+       
+       result = _mbr_MapName(GetServerPort(), 1, (char*)name, (guid_t*)uu);
+       
+       if (result == KERN_FAILURE)
+               return ENOENT;
+       else if (result != KERN_SUCCESS)
+               return EIO;
+               
        return 0;
 }
 
-int mbr_group_name_to_uuid(const char *name, uuid_t uu)
+int mbr_group_name_to_uuid(const charname, uuid_t uu)
 {
-       security_token_t token;
        kern_return_t result;
-
-       if (name == NULL) return EINVAL;
-       if (strlen(name) > 255) return EINVAL;
-
-       token.val[0] = -1;
-       token.val[1] = -1;
-
-       result = _mbr_MapName(GetServerPort(), 0, (char *)name, (guid_t *)uu, &token);
-       if (result == KERN_FAILURE) return ENOENT;
-       else if (result != KERN_SUCCESS) return EIO;
-
-       if (token.val[0] != 0) return EAUTH;
-
+       
+       if (strlen(name) > 255)
+               return EINVAL;
+       
+       result = _mbr_MapName(GetServerPort(), 0, (char*)name, (guid_t*)uu);
+       
+       if (result == KERN_FAILURE)
+               return ENOENT;
+       else if (result != KERN_SUCCESS)
+               return EIO;
+               
        return 0;
 }
 
-int mbr_check_service_membership(const uuid_t user, const char *servicename, int *ismember)
+int mbr_check_service_membership(const uuid_t user, const char* servicename, int* ismember)
 {
-       char *prefix = "com.apple.access_";
-       char *all_services = "com.apple.access_all_services";
+       charprefix = "com.apple.access_";
+       charall_services = "com.apple.access_all_services";
        char groupName[256];
        uuid_t group_uu;
        int result, dummy;
-
-       if (servicename == NULL) return EINVAL;
-       if (strlen(servicename) > (255 - strlen(prefix))) return EINVAL;
-
-       /* start by checking "all services" */
+       
+       if (strlen(servicename) > 255 - strlen(prefix))
+               return EINVAL;
+       
+       // start by checking "all services"
        result = mbr_group_name_to_uuid(all_services, group_uu);
-
-       if (result == EAUTH) return result;
-
+       
        if (result == ENOENT)
        {
-               /* all_services group didn't exist, check individual group */
+               // all_services group didn't exist, check individual group
                memcpy(groupName, prefix, strlen(prefix));
                strcpy(groupName + strlen(prefix), servicename);
                result = mbr_group_name_to_uuid(groupName, group_uu);
        }
-
+       
        if (result == 0)
-       {
                result = mbr_check_membership_refresh(user, group_uu, ismember);
-       }
-       else if (result == EAUTH)
-       {
-               return result;
-       }
        else
        {
-               /* just force cache update with bogus membership check */
+               // just force cache update with bogus membership check
                memset(group_uu, 0, sizeof(group_uu));
                mbr_check_membership_refresh(user, group_uu, &dummy);
        }
-
+               
        return result;
 }
 
-static char *ConvertBytesToDecimal(char *buffer, unsigned long long value)
+static char* ConvertBytesToDecimal(char* buffer, unsigned long long value)
 {
-       char *temp;
+       chartemp;
        buffer[24] = '\0';
        buffer[23] = '0';
-
-       if (value == 0) return &buffer[23];
-
+       
+       if (value == 0)
+               return &buffer[23];
+       
        temp = &buffer[24];
        while (value != 0)
        {
@@ -363,22 +334,23 @@ static char *ConvertBytesToDecimal(char *buffer, unsigned long long value)
                *temp = '0' + (value % 10);
                value /= 10;
        }
-
+       
        return temp;
 }
 
-int mbr_sid_to_string(const nt_sid_t *sid, char *string)
+int mbr_sid_to_string(const nt_sid_t* sid, char* string)
 {
-       char *current = string;
+       charcurrent = string;
        long long temp = 0;
        int i;
        char tempBuffer[25];
-
-       if (sid->sid_authcount > NTSID_MAX_AUTHORITIES) return EINVAL;
-
+       
+       if (sid->sid_authcount > NTSID_MAX_AUTHORITIES)
+               return EINVAL;
+       
        for (i = 0; i < 6; i++)
                temp = (temp << 8) | sid->sid_authority[i];
-
+       
        current[0] = 'S';
        current[1] = '-';
        current += 2;
@@ -387,54 +359,54 @@ int mbr_sid_to_string(const nt_sid_t *sid, char *string)
        *current = '-';
        current++;
        strcpy(current, ConvertBytesToDecimal(tempBuffer, temp));
-
-       for (i = 0; i < sid->sid_authcount; i++)
+       
+       for(i=0; i < sid->sid_authcount; i++)
        {
                current = current + strlen(current);
                *current = '-';
                current++;
                strcpy(current, ConvertBytesToDecimal(tempBuffer, sid->sid_authorities[i]));
        }
-
+       
        return 0;
 }
 
-int mbr_string_to_sid(const char *string, nt_sid_t *sid)
+int mbr_string_to_sid(const char* string, nt_sid_t* sid)
 {
-       char *current = string+2;
+       charcurrent = string+2;
        int count = 0;
        long long temp;
 
        memset(sid, 0, sizeof(nt_sid_t));
-       if ((string[0] != 'S') || (string[1] != '-')) return EINVAL;
-
+       if (string[0] != 'S' || string[1] != '-') return EINVAL;
+       
        sid->sid_kind = strtol(current, &current, 10);
        if (*current == '\0') return EINVAL;
        current++;
        temp = strtoll(current, &current, 10);
-
-       /* convert to BigEndian before copying */
+       // convert to BigEndian before copying
        temp = OSSwapHostToBigInt64(temp);
        memcpy(sid->sid_authority, ((char*)&temp)+2, 6);
-       while ((*current != '\0') && (count < NTSID_MAX_AUTHORITIES))
+       while (*current != '\0' && count < NTSID_MAX_AUTHORITIES)
        {
                current++;
                sid->sid_authorities[count] = strtol(current, &current, 10);
                count++;
        }
-
-       if (*current != '\0') return EINVAL;
-
+       
+       if (*current != '\0')
+               return EINVAL;
+       
        sid->sid_authcount = count;
-
+       
        return 0;
 }
 
-static void ConvertBytesToHex(char **string, char **data, int numBytes)
+static void ConvertBytesToHex(char** string, char** data, int numBytes)
 {
        int i;
-
-       for (i = 0; i < numBytes; i++)
+       
+       for (i=0; i < numBytes; i++)
        {
                unsigned char hi = ((**data) >> 4) & 0xf;
                unsigned char low = (**data) & 0xf;
@@ -442,7 +414,7 @@ static void ConvertBytesToHex(char **string, char **data, int numBytes)
                        **string = '0' + hi;
                else
                        **string = 'A' + hi - 10;
-
+                       
                (*string)++;
 
                if (low < 10)
@@ -455,10 +427,10 @@ static void ConvertBytesToHex(char **string, char **data, int numBytes)
        }
 }
 
-int mbr_uuid_to_string(const uuid_t uu, char *string)
+int mbr_uuid_to_string(const uuid_t uu, charstring)
 {
-       char *guid = (char *)uu;
-       char *strPtr = string;
+       char* guid = (char*)uu;
+       charstrPtr = string;
        ConvertBytesToHex(&strPtr, &guid, 4);
        *strPtr = '-'; strPtr++;
        ConvertBytesToHex(&strPtr, &guid, 2);
@@ -469,41 +441,36 @@ int mbr_uuid_to_string(const uuid_t uu, char *string)
        *strPtr = '-'; strPtr++;
        ConvertBytesToHex(&strPtr, &guid, 6);
        *strPtr = '\0';
-
+       
        return 0;
 }
 
-int mbr_string_to_uuid(const char *string, uuid_t uu)
+int mbr_string_to_uuid(const charstring, uuid_t uu)
 {
        short dataIndex = 0;
        int isFirstNibble = 1;
-
+       
        if (strlen(string) > MBR_UU_STRING_SIZE)
                return EINVAL;
-
+       
        while (*string != '\0' && dataIndex < 16)
        {
                char nibble;
-
-               if ((*string >= '0') && (*string <= '9'))
-               {
+               
+               if (*string >= '0' && *string <= '9')
                        nibble = *string - '0';
-               }
-               else if ((*string >= 'A') && (*string <= 'F'))
-               {
+               else if (*string >= 'A' && *string <= 'F')
                        nibble = *string - 'A' + 10;
-               }
-               else if ((*string >= 'a') && (*string <= 'f'))
-               {
+               else if (*string >= 'a' && *string <= 'f')
                        nibble = *string - 'a' + 10;
-               }
                else
                {
-                       if (*string != '-') return EINVAL;
+                       if (*string != '-')
+                               return EINVAL;
                        string++;
                        continue;
                }
-
+               
                if (isFirstNibble)
                {
                        uu[dataIndex] = nibble << 4;
@@ -515,11 +482,13 @@ int mbr_string_to_uuid(const char *string, uuid_t uu)
                        dataIndex++;
                        isFirstNibble = 1;
                }
-
+               
                string++;
        }
-
-       if (dataIndex != 16) return EINVAL;
-
+       
+       if (dataIndex != 16)
+               return EINVAL;
+               
        return 0;
 }
+
index 74fc04386f494bb4273de2c22c5222ceb821a3d5..1a8fe445f2497588ece5096cc14b200798d467f7 100644 (file)
@@ -183,7 +183,7 @@ getrpcent()
 static struct rpcent *
 interpret(val, len)
        char *val;
-       u_int len;
+       int len;
 {
        register struct rpcdata *d = _rpcdata();
        char *p;
index e96e505b91e794af6ed4ed9ae9101d2aae0d343d..cd19041897dc2984d5707eccacf934b8b5e8ec09 100644 (file)
@@ -89,7 +89,8 @@ _svcauth_unix(rqst, msg)
                char area_machname[MAX_MACHINE_NAME+1];
                int area_gids[NGROUPS];
        } *area;
-       u_int auth_len, str_len, gid_len;
+       u_int auth_len;
+       int str_len, gid_len;
        register int i;
 
        area = (struct area *) rqst->rq_clntcred;
@@ -106,7 +107,7 @@ _svcauth_unix(rqst, msg)
                        stat = AUTH_BADCRED;
                        goto done;
                }
-               bcopy((caddr_t)buf, aup->aup_machname, str_len);
+               bcopy((caddr_t)buf, aup->aup_machname, (u_int)str_len);
                aup->aup_machname[str_len] = 0;
                str_len = RNDUP(str_len);
                buf += str_len / sizeof (long);
@@ -126,9 +127,8 @@ _svcauth_unix(rqst, msg)
                 * timestamp, hostname len (0), uid, gid, and gids len (0).
                 */
                if ((5 + gid_len) * BYTES_PER_XDR_UNIT + str_len > auth_len) {
-                       /* LIBRARY CODE SHOULD NOT PRINT
-                       (void) printf("bad auth_len gid %d str %d auth %d\n", gid_len, str_len, auth_len);
-                       */
+                       (void) printf("bad auth_len gid %d str %d auth %d\n",
+                           gid_len, str_len, auth_len);
                        stat = AUTH_BADCRED;
                        goto done;
                }