Files
archy/scripts/tests/radio_handoff_fixture.c

16 lines
759 B
C

#define _GNU_SOURCE
#include <sys/socket.h>
#include <sys/prctl.h>
#include <unistd.h>
#include <fcntl.h>
#include <string.h>
int main(int argc,char **argv) {
struct ucred peer; socklen_t size=sizeof(peer); char reply[8];
if(argc!=2 || strcmp(argv[1],"c01-managed-v7") || getuid()!=53001 || geteuid()!=53001 ||
getgid()!=53001 || getegid()!=53001 || getgroups(0,0)!=0 || prctl(PR_GET_NO_NEW_PRIVS,0,0,0,0)!=1) return 91;
if(fcntl(13,F_GETFD)!=-1) return 92; /* Authority's epoch slot must not leak. */
if(getsockopt(14,SOL_SOCKET,SO_PEERCRED,&peer,&size) || peer.uid || peer.gid || peer.pid<=1) return 93;
if(send(14,"FD14",4,MSG_NOSIGNAL)!=4 || recv(14,reply,sizeof(reply),0)!=2 || memcmp(reply,"OK",2)) return 94;
return 0;
}