File: env.c

package info (click to toggle)
ucspi-unix 1.0-6
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 452 kB
  • sloc: ansic: 2,606; python: 535; makefile: 14; sh: 1
file content (24 lines) | stat: -rw-r--r-- 678 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include "haspeercred.h"
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

extern const char* utoa(unsigned long);

void setup_env(int fd, const char* socket)
{
#ifdef HASPEERCRED
  struct ucred peer;
  socklen_t optlen = sizeof(peer);
  if(getsockopt(fd, SOL_SOCKET, SO_PEERCRED, &peer, &optlen) != -1) {
    setenv("UNIXREMOTEEGID", utoa(peer.gid), 1);
    setenv("UNIXREMOTEEUID", utoa(peer.uid), 1);
    setenv("UNIXREMOTEPID", utoa(peer.pid), 1);
  }
#endif
  setenv("PROTO", "UNIX", 1);
  setenv("UNIXLOCALGID", utoa(getgid()), 1);
  setenv("UNIXLOCALPID", utoa(getpid()), 1);
  setenv("UNIXLOCALPATH", socket, 1);
  setenv("UNIXLOCALUID", utoa(getuid()), 1);
}