diff --git a/sbin/ffsinfo/ffsinfo.c b/sbin/ffsinfo/ffsinfo.c index 3e3a8c246557..e556be82c7e2 100644 --- a/sbin/ffsinfo/ffsinfo.c +++ b/sbin/ffsinfo/ffsinfo.c @@ -63,6 +63,7 @@ static const char rcsid[] = #include #include +#include #include #include #include @@ -148,19 +149,25 @@ main(int argc, char **argv) while ((ch=getopt(argc, argv, "g:i:l:o:")) != -1) { switch(ch) { case 'g': - cfg_cg=atol(optarg); + cfg_cg=strtol(optarg, NULL, 0); + if(errno == EINVAL||errno == ERANGE) + err(1, "%s", optarg); if(cfg_cg < -1) { usage(); } break; case 'i': - cfg_in=atol(optarg); + cfg_in=strtol(optarg, NULL, 0); + if(errno == EINVAL||errno == ERANGE) + err(1, "%s", optarg); if(cfg_in < 0) { usage(); } break; case 'l': - cfg_lv=atol(optarg); + cfg_lv=strtol(optarg, NULL, 0); + if(errno == EINVAL||errno == ERANGE) + err(1, "%s", optarg); if(cfg_lv < 0x1||cfg_lv > 0x3ff) { usage(); }