summaryrefslogtreecommitdiffstats
path: root/gnu/usr.bin/patch/patch.c
diff options
context:
space:
mode:
authorkris <kris@FreeBSD.org>2002-10-13 01:18:33 +0000
committerkris <kris@FreeBSD.org>2002-10-13 01:18:33 +0000
commitcf195c5ed6e5764ba6c19016c02d87d7ca2cc7ad (patch)
tree94b2a6549e211894e16a902fb1410169adc74a10 /gnu/usr.bin/patch/patch.c
parent010f2e91710c50e9cb49dc93d4c857ddfec610e4 (diff)
downloadFreeBSD-src-cf195c5ed6e5764ba6c19016c02d87d7ca2cc7ad.zip
FreeBSD-src-cf195c5ed6e5764ba6c19016c02d87d7ca2cc7ad.tar.gz
Prevent stack-smashing buffer overflows in -D and -r options by using
buffer-safe string functions. The rest of the code is still probably unsafe. MFC after: 1 week
Diffstat (limited to 'gnu/usr.bin/patch/patch.c')
-rw-r--r--gnu/usr.bin/patch/patch.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/gnu/usr.bin/patch/patch.c b/gnu/usr.bin/patch/patch.c
index df64421..8e06c33 100644
--- a/gnu/usr.bin/patch/patch.c
+++ b/gnu/usr.bin/patch/patch.c
@@ -90,6 +90,7 @@ char rcsid[] =
*
*/
+#include <paths.h>
#include "INTERN.h"
#include "common.h"
#include "EXTERN.h"
@@ -166,7 +167,7 @@ char **argv;
tmpdir = getenv ("TMPDIR");
if (tmpdir == NULL) {
- tmpdir = "/tmp";
+ tmpdir = _PATH_TMP;
}
tmpname_len = strlen (tmpdir) + 20;
@@ -387,7 +388,7 @@ char **argv;
if (failed) {
failtotal += failed;
if (!*rejname) {
- Strcpy(rejname, outname);
+ Strlcpy(rejname, outname, sizeof(rejname));
addext(rejname, ".rej", '#');
}
if (skip_rest_of_patch) {
@@ -524,9 +525,9 @@ get_some_switches(void)
do_defines = TRUE;
if (!isalpha((unsigned char)*optarg) && '_' != *optarg)
fatal1("argument to -D is not an identifier\n");
- Sprintf(if_defined, "#ifdef %s\n", optarg);
- Sprintf(not_defined, "#ifndef %s\n", optarg);
- Sprintf(end_defined, "#endif /* %s */\n", optarg);
+ Snprintf(if_defined, sizeof(if_defined), "#ifdef %s\n", optarg);
+ Snprintf(not_defined, sizeof(not_defined), "#ifndef %s\n", optarg);
+ Snprintf(end_defined, sizeof(end_defined), "#endif /* %s */\n", optarg);
break;
case 'e':
diff_type = ED_DIFF;
@@ -565,7 +566,7 @@ get_some_switches(void)
strippath = 0;
break;
case 'r':
- Strcpy(rejname, optarg);
+ Strlcpy(rejname, optarg, sizeof(rejname));
break;
case 'R':
reverse = TRUE;
OpenPOWER on IntegriCloud