1d6f122f4SPawel Jakub Dawidek /*- 2d6f122f4SPawel Jakub Dawidek * Copyright (c) 2012 The FreeBSD Foundation 3d6f122f4SPawel Jakub Dawidek * All rights reserved. 4d6f122f4SPawel Jakub Dawidek * 5d6f122f4SPawel Jakub Dawidek * This software was developed by Pawel Jakub Dawidek under sponsorship from 6d6f122f4SPawel Jakub Dawidek * the FreeBSD Foundation. 7d6f122f4SPawel Jakub Dawidek * 8d6f122f4SPawel Jakub Dawidek * Redistribution and use in source and binary forms, with or without 9d6f122f4SPawel Jakub Dawidek * modification, are permitted provided that the following conditions 10d6f122f4SPawel Jakub Dawidek * are met: 11d6f122f4SPawel Jakub Dawidek * 1. Redistributions of source code must retain the above copyright 12d6f122f4SPawel Jakub Dawidek * notice, this list of conditions and the following disclaimer. 13d6f122f4SPawel Jakub Dawidek * 2. Redistributions in binary form must reproduce the above copyright 14d6f122f4SPawel Jakub Dawidek * notice, this list of conditions and the following disclaimer in the 15d6f122f4SPawel Jakub Dawidek * documentation and/or other materials provided with the distribution. 16d6f122f4SPawel Jakub Dawidek * 17d6f122f4SPawel Jakub Dawidek * THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND 18d6f122f4SPawel Jakub Dawidek * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19d6f122f4SPawel Jakub Dawidek * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20d6f122f4SPawel Jakub Dawidek * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE 21d6f122f4SPawel Jakub Dawidek * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 22d6f122f4SPawel Jakub Dawidek * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 23d6f122f4SPawel Jakub Dawidek * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 24d6f122f4SPawel Jakub Dawidek * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 25d6f122f4SPawel Jakub Dawidek * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 26d6f122f4SPawel Jakub Dawidek * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 27d6f122f4SPawel Jakub Dawidek * SUCH DAMAGE. 28d6f122f4SPawel Jakub Dawidek */ 29d6f122f4SPawel Jakub Dawidek 30d6f122f4SPawel Jakub Dawidek #include <sys/cdefs.h> 31d6f122f4SPawel Jakub Dawidek __FBSDID("$FreeBSD$"); 32d6f122f4SPawel Jakub Dawidek 33*b881b8beSRobert Watson #include <sys/capsicum.h> 34d6f122f4SPawel Jakub Dawidek 35d6f122f4SPawel Jakub Dawidek #include <assert.h> 36d6f122f4SPawel Jakub Dawidek #include <errno.h> 37d6f122f4SPawel Jakub Dawidek #include <stdbool.h> 38d6f122f4SPawel Jakub Dawidek 39d6f122f4SPawel Jakub Dawidek bool 40d6f122f4SPawel Jakub Dawidek cap_sandboxed(void) 41d6f122f4SPawel Jakub Dawidek { 42d6f122f4SPawel Jakub Dawidek u_int mode; 43d6f122f4SPawel Jakub Dawidek 44d6f122f4SPawel Jakub Dawidek if (cap_getmode(&mode) != 0) { 45d6f122f4SPawel Jakub Dawidek assert(errno == ENOSYS); 46d6f122f4SPawel Jakub Dawidek return (false); 47d6f122f4SPawel Jakub Dawidek } 48d6f122f4SPawel Jakub Dawidek assert(mode == 0 || mode == 1); 49d6f122f4SPawel Jakub Dawidek return (mode == 1); 50d6f122f4SPawel Jakub Dawidek } 51