Branch data Line data Source code
1 : : /*
2 : : * Copyright (c) 2013 Damien Miller <djm@mindrot.org>
3 : : *
4 : : * Permission to use, copy, modify, and distribute this software for any
5 : : * purpose with or without fee is hereby granted, provided that the above
6 : : * copyright notice and this permission notice appear in all copies.
7 : : *
8 : : * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9 : : * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10 : : * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11 : : * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12 : : * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13 : : * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14 : : * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15 : : */
16 : :
17 : : /* $OpenBSD$ */
18 : :
19 : : #include "includes.h"
20 : :
21 : : #include <sys/types.h>
22 : : #ifdef HAVE_SYS_STATVFS_H
23 : : # include <sys/statvfs.h>
24 : : #endif
25 : : #include <stdio.h>
26 : : #include <string.h>
27 : : #include <errno.h>
28 : :
29 : : void
30 : 0 : usage(void)
31 : : {
32 : 0 : fprintf(stderr, "check-setuid [path]\n");
33 : 0 : exit(1);
34 : : }
35 : :
36 : : int
37 : 1 : main(int argc, char **argv)
38 : : {
39 : 1 : const char *path = ".";
40 : : struct statvfs sb;
41 : :
42 [ - + ]: 1 : if (argc > 2)
43 : 0 : usage();
44 [ + - ]: 1 : else if (argc == 2)
45 : 1 : path = argv[1];
46 : :
47 [ - + ]: 1 : if (statvfs(path, &sb) != 0) {
48 : : /* Don't return an error if the host doesn't support statvfs */
49 [ # # ]: 0 : if (errno == ENOSYS)
50 : : return 0;
51 : 0 : fprintf(stderr, "statvfs for \"%s\" failed: %s\n",
52 : : path, strerror(errno));
53 : : }
54 : 1 : return (sb.f_flag & ST_NOSUID) ? 1 : 0;
55 : : }
56 : :
57 : :
|