svn commit: r364298 - in stable/12/usr.bin/fortune: fortune strfile
Mark Johnston
markj at FreeBSD.org
Mon Aug 17 12:38:36 UTC 2020
Author: markj
Date: Mon Aug 17 12:38:35 2020
New Revision: 364298
URL: https://svnweb.freebsd.org/changeset/base/364298
Log:
MFC r364083:
fortune, strfile: Improve validation of command-line arguments.
PR: 246050
Modified:
stable/12/usr.bin/fortune/fortune/fortune.c
stable/12/usr.bin/fortune/strfile/strfile.c
Directory Properties:
stable/12/ (props changed)
Modified: stable/12/usr.bin/fortune/fortune/fortune.c
==============================================================================
--- stable/12/usr.bin/fortune/fortune/fortune.c Mon Aug 17 10:51:03 2020 (r364297)
+++ stable/12/usr.bin/fortune/fortune/fortune.c Mon Aug 17 12:38:35 2020 (r364298)
@@ -400,11 +400,12 @@ form_file_list(char **files, int file_cnt)
sp = files[i];
else {
percent = 0;
- for (sp = files[i]; isdigit((unsigned char)*sp); sp++)
+ for (sp = files[i]; isdigit((unsigned char)*sp); sp++) {
percent = percent * 10 + *sp - '0';
- if (percent > 100) {
- fprintf(stderr, "percentages must be <= 100\n");
- return (FALSE);
+ if (percent > 100) {
+ fprintf(stderr, "percentages must be <= 100\n");
+ return (FALSE);
+ }
}
if (*sp == '.') {
fprintf(stderr, "percentages must be integers\n");
Modified: stable/12/usr.bin/fortune/strfile/strfile.c
==============================================================================
--- stable/12/usr.bin/fortune/strfile/strfile.c Mon Aug 17 10:51:03 2020 (r364297)
+++ stable/12/usr.bin/fortune/strfile/strfile.c Mon Aug 17 12:38:35 2020 (r364298)
@@ -295,16 +295,26 @@ getargs(int argc, char **argv)
if (*argv) {
Infile = *argv;
- if (*++argv)
- strcpy(Outfile, *argv);
+ if (*++argv) {
+ if (strlcpy(Outfile, *argv, sizeof(Outfile)) >=
+ sizeof(Outfile)) {
+ fprintf(stderr,
+ "output_file path is too long\n");
+ exit(1);
+ }
+ }
}
if (!Infile) {
puts("No input file name");
usage();
}
if (*Outfile == '\0') {
- strlcpy(Outfile, Infile, sizeof(Outfile));
- strlcat(Outfile, ".dat", sizeof(Outfile));
+ if ((size_t)snprintf(Outfile, sizeof(Outfile), "%s.dat",
+ Infile) >= sizeof(Outfile)) {
+ fprintf(stderr,
+ "generated output_file path is too long\n");
+ exit(1);
+ }
}
}
More information about the svn-src-all
mailing list