Index: usr.bin/systat/devs.c =================================================================== --- usr.bin/systat/devs.c +++ usr.bin/systat/devs.c @@ -202,10 +202,10 @@ if (**tempstr != '\0') if (++tempstr >= &tstr[100]) break; - free(tmpstr); if (num_args > 99) { warnx("dsmatchselect: too many match arguments"); + free(tmpstr); return(0); } @@ -222,9 +222,11 @@ for (i = 0; i < num_args; i++) { if (devstat_buildmatch(tstr[i], &matches, &num_matches) != 0) { warnx("%s", devstat_errbuf); + free(tmpstr); return(0); } } + free(tmpstr); if (num_args > 0) { last_type = DS_MATCHTYPE_PATTERN;