18290d1083ec7eee3f32265012f5d6be2774c4afcStephen Smalley#include <stdio.h> 28290d1083ec7eee3f32265012f5d6be2774c4afcStephen Smalley#include <stdlib.h> 38290d1083ec7eee3f32265012f5d6be2774c4afcStephen Smalley#include <string.h> 48290d1083ec7eee3f32265012f5d6be2774c4afcStephen Smalley#include <unistd.h> 58290d1083ec7eee3f32265012f5d6be2774c4afcStephen Smalley#include <errno.h> 68290d1083ec7eee3f32265012f5d6be2774c4afcStephen Smalley#include <selinux/selinux.h> 78290d1083ec7eee3f32265012f5d6be2774c4afcStephen Smalley 88290d1083ec7eee3f32265012f5d6be2774c4afcStephen Smalleyint runcon_main(int argc, char **argv) 98290d1083ec7eee3f32265012f5d6be2774c4afcStephen Smalley{ 108290d1083ec7eee3f32265012f5d6be2774c4afcStephen Smalley int rc; 118290d1083ec7eee3f32265012f5d6be2774c4afcStephen Smalley 128290d1083ec7eee3f32265012f5d6be2774c4afcStephen Smalley if (argc < 3) { 138290d1083ec7eee3f32265012f5d6be2774c4afcStephen Smalley fprintf(stderr, "usage: %s context program args...\n", argv[0]); 148290d1083ec7eee3f32265012f5d6be2774c4afcStephen Smalley exit(1); 158290d1083ec7eee3f32265012f5d6be2774c4afcStephen Smalley } 168290d1083ec7eee3f32265012f5d6be2774c4afcStephen Smalley 178290d1083ec7eee3f32265012f5d6be2774c4afcStephen Smalley rc = setexeccon(argv[1]); 188290d1083ec7eee3f32265012f5d6be2774c4afcStephen Smalley if (rc < 0) { 198290d1083ec7eee3f32265012f5d6be2774c4afcStephen Smalley fprintf(stderr, "Could not set context to %s: %s\n", argv[1], strerror(errno)); 208290d1083ec7eee3f32265012f5d6be2774c4afcStephen Smalley exit(2); 218290d1083ec7eee3f32265012f5d6be2774c4afcStephen Smalley } 228290d1083ec7eee3f32265012f5d6be2774c4afcStephen Smalley 238290d1083ec7eee3f32265012f5d6be2774c4afcStephen Smalley argv += 2; 248290d1083ec7eee3f32265012f5d6be2774c4afcStephen Smalley argc -= 2; 258290d1083ec7eee3f32265012f5d6be2774c4afcStephen Smalley execvp(argv[0], argv); 268290d1083ec7eee3f32265012f5d6be2774c4afcStephen Smalley fprintf(stderr, "Could not exec %s: %s\n", argv[0], strerror(errno)); 278290d1083ec7eee3f32265012f5d6be2774c4afcStephen Smalley exit(3); 288290d1083ec7eee3f32265012f5d6be2774c4afcStephen Smalley} 29