#include <stdio.h>
#include <sys/types.h>
#include <stdlib.h>
#include <unistd.h>
#define MAXARGS 255
/*#define DEBUG 1*/
const char* perl = "/usr/bin/perl";
const char* path = "/home/nagios/libexec/check_perc5i.pl";
int main(int argc, char* argv[]) {
char* new_args[MAXARGS + 2];
int i;
if (argc >= MAXARGS) {
printf ("arg overflow (> %d args)\n", MAXARGS);
return 1;
}
setuid(0);
seteuid(0);
new_args[0] = (char*) perl;
new_args[1] = (char*) path;
for (i=1; i<argc; i++) {
new_args[i+1] = argv[i];
}
new_args[argc+1] = NULL;
#ifdef DEBUG
i = 0;
while (new_args[i] != NULL) {
printf ("%d = %s\n", i, new_args[i]);
i++;
}
#endif
execv(perl, new_args);
perror("Unable to exec perl!");
return 1;
}