File: env.c

package info (click to toggle)
ucspi-unix 0.36-4
  • links: PTS
  • area: main
  • in suites: jessie, jessie-kfreebsd, squeeze, stretch, wheezy
  • size: 160 kB
  • ctags: 59
  • sloc: ansic: 409; makefile: 58; sh: 1
file content (24 lines) | stat: -rw-r--r-- 668 bytes parent folder | download | duplicates (2)
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 <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sysdeps.h>

extern const char* utoa(unsigned long);

void setup_env(int fd, const char* socket)
{
#ifdef HASPEERCRED
  struct ucred peer;
  int 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);
}