diff --git a/usr.sbin/trim/trim.c b/usr.sbin/trim/trim.c index 929827a98777..37c90d87779c 100644 --- a/usr.sbin/trim/trim.c +++ b/usr.sbin/trim/trim.c @@ -40,6 +40,7 @@ #include #include #include +#include #include #include @@ -104,6 +105,23 @@ main(int argc, char **argv) /* NOTREACHED */ } + /* + * Safety net: do not allow mistakes like + * + * trim -f /dev/da0 -r rfile + * + * This would trim whole device then error on non-existing file -r. + * Following check prevents this while allowing this form still: + * + * trim -f -- /dev/da0 -r rfile + */ + + if (strcmp(argv[optind-1], "--") != 0) { + for (ch = optind; ch < argc; ch++) + if (argv[ch][0] == '-') + usage(name); + } + argv += optind; argc -= optind;