14b17dab0SDag-Erling Smørgrav /* 24b17dab0SDag-Erling Smørgrav * Copyright (c) 2002 Damien Miller. All rights reserved. 34b17dab0SDag-Erling Smørgrav * 44b17dab0SDag-Erling Smørgrav * Redistribution and use in source and binary forms, with or without 54b17dab0SDag-Erling Smørgrav * modification, are permitted provided that the following conditions 64b17dab0SDag-Erling Smørgrav * are met: 74b17dab0SDag-Erling Smørgrav * 1. Redistributions of source code must retain the above copyright 84b17dab0SDag-Erling Smørgrav * notice, this list of conditions and the following disclaimer. 94b17dab0SDag-Erling Smørgrav * 2. Redistributions in binary form must reproduce the above copyright 104b17dab0SDag-Erling Smørgrav * notice, this list of conditions and the following disclaimer in the 114b17dab0SDag-Erling Smørgrav * documentation and/or other materials provided with the distribution. 124b17dab0SDag-Erling Smørgrav * 134b17dab0SDag-Erling Smørgrav * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 144b17dab0SDag-Erling Smørgrav * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 154b17dab0SDag-Erling Smørgrav * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 164b17dab0SDag-Erling Smørgrav * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 174b17dab0SDag-Erling Smørgrav * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 184b17dab0SDag-Erling Smørgrav * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 194b17dab0SDag-Erling Smørgrav * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 204b17dab0SDag-Erling Smørgrav * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 214b17dab0SDag-Erling Smørgrav * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 224b17dab0SDag-Erling Smørgrav * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 234b17dab0SDag-Erling Smørgrav */ 244b17dab0SDag-Erling Smørgrav 254b17dab0SDag-Erling Smørgrav #include "includes.h" 264b17dab0SDag-Erling Smørgrav 274b17dab0SDag-Erling Smørgrav RCSID("$Id: bsd-getpeereid.c,v 1.1 2002/09/12 00:33:02 djm Exp $"); 284b17dab0SDag-Erling Smørgrav 294b17dab0SDag-Erling Smørgrav #if !defined(HAVE_GETPEEREID) 304b17dab0SDag-Erling Smørgrav 314b17dab0SDag-Erling Smørgrav #if defined(SO_PEERCRED) 324b17dab0SDag-Erling Smørgrav int 334b17dab0SDag-Erling Smørgrav getpeereid(int s, uid_t *euid, gid_t *gid) 344b17dab0SDag-Erling Smørgrav { 354b17dab0SDag-Erling Smørgrav struct ucred cred; 364b17dab0SDag-Erling Smørgrav size_t len = sizeof(cred); 374b17dab0SDag-Erling Smørgrav 384b17dab0SDag-Erling Smørgrav if (getsockopt(s, SOL_SOCKET, SO_PEERCRED, &cred, &len) < 0) 394b17dab0SDag-Erling Smørgrav return (-1); 404b17dab0SDag-Erling Smørgrav *euid = cred.uid; 414b17dab0SDag-Erling Smørgrav *gid = cred.gid; 424b17dab0SDag-Erling Smørgrav 434b17dab0SDag-Erling Smørgrav return (0); 444b17dab0SDag-Erling Smørgrav } 454b17dab0SDag-Erling Smørgrav #else 464b17dab0SDag-Erling Smørgrav int 474b17dab0SDag-Erling Smørgrav getpeereid(int s, uid_t *euid, gid_t *gid) 484b17dab0SDag-Erling Smørgrav { 494b17dab0SDag-Erling Smørgrav *euid = geteuid(); 504b17dab0SDag-Erling Smørgrav *gid = getgid(); 514b17dab0SDag-Erling Smørgrav 524b17dab0SDag-Erling Smørgrav return (0); 534b17dab0SDag-Erling Smørgrav } 544b17dab0SDag-Erling Smørgrav #endif /* defined(SO_PEERCRED) */ 554b17dab0SDag-Erling Smørgrav 564b17dab0SDag-Erling Smørgrav #endif /* !defined(HAVE_GETPEEREID) */ 57