198524Sfenner/* 298524Sfenner * Copyright (c) 2013 Damien Miller <djm@mindrot.org> 398524Sfenner * 498524Sfenner * Permission to use, copy, modify, and distribute this software for any 598524Sfenner * purpose with or without fee is hereby granted, provided that the above 698524Sfenner * copyright notice and this permission notice appear in all copies. 798524Sfenner * 898524Sfenner * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 998524Sfenner * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 1098524Sfenner * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 1198524Sfenner * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 1298524Sfenner * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 1398524Sfenner * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 1498524Sfenner * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 1598524Sfenner */ 1698524Sfenner 1798524Sfenner/* $OpenBSD$ */ 1898524Sfenner 1998524Sfenner#include "includes.h" 2098524Sfenner 2198524Sfenner#include <sys/types.h> 2298524Sfenner#ifdef HAVE_SYS_STATVFS_H 2398524Sfenner# include <sys/statvfs.h> 2498524Sfenner#endif 2598524Sfenner#include <stdlib.h> 2698524Sfenner#include <stdio.h> 2798524Sfenner#include <string.h> 2898524Sfenner#include <errno.h> 2998524Sfenner 3098524Sfennerstatic void 31127668Sbmsusage(void) 32190207Srpaulo{ 3398524Sfenner fprintf(stderr, "check-setuid [path]\n"); 3498524Sfenner exit(1); 3598524Sfenner} 3698524Sfenner 3798524Sfennerint 3898524Sfennermain(int argc, char **argv) 39127668Sbms{ 4098524Sfenner const char *path = "."; 4198524Sfenner struct statvfs sb; 4298524Sfenner 4398524Sfenner if (argc > 2) 4498524Sfenner usage(); 4598524Sfenner else if (argc == 2) 4698524Sfenner path = argv[1]; 4798524Sfenner 4898524Sfenner if (statvfs(path, &sb) != 0) { 4998524Sfenner /* Don't return an error if the host doesn't support statvfs */ 5098524Sfenner if (errno == ENOSYS) 5198524Sfenner return 0; 5298524Sfenner fprintf(stderr, "statvfs for \"%s\" failed: %s\n", 5398524Sfenner path, strerror(errno)); 5498524Sfenner } 5598524Sfenner return (sb.f_flag & ST_NOSUID) ? 1 : 0; 5698524Sfenner} 5798524Sfenner 5898524Sfenner 5998524Sfenner