summaryrefslogtreecommitdiffstats
path: root/korean/helvis/files/patch-elvrec.c
blob: 0fc75861712770e3af7908d8b6b0f305e4512bac (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
--- elvrec.c.orig	Mon Mar 21 14:27:37 1994
+++ elvrec.c	Sun Jan 28 20:52:16 2001
@@ -10,6 +10,7 @@
  */
 
 
+#include <sys/param.h>
 #include <stdio.h>
 #include "config.h"
 #include "vi.h"
@@ -22,8 +23,8 @@
 	char	*basename;	/* the name of the file to recover */
 	char	*outname;	/* the name of the file to write to */
 {
-	char	pathname[500];	/* full pathname of the file to recover */
-	char	line[600];	/* a line from the /usr/preserve/Index file */
+	char	pathname[MAXPATHLEN]; /* full pathname of the file to recover */
+	char	line[MAXPATHLEN]; /* a line from the /usr/preserve/Index file */
 	int	ch;		/* a character from the text being recovered */
 	FILE	*from;		/* the /usr/preserve file, or /usr/preserve/Index */
 	FILE	*to;		/* the user's text file */
@@ -42,19 +43,15 @@
 		if (basename[0] != SLASH)
 # endif
 		{
-			ptr = getcwd(pathname, sizeof pathname);
-			if (ptr != pathname)
-			{
-				strcpy(pathname, ptr);
-			}
-			ptr = pathname + strlen(pathname);
-			*ptr++ = SLASH;
-			strcpy(ptr, basename);
+			if ((ptr = getcwd(pathname, sizeof pathname)) == NULL)
+				err(1, "getcwd() failed");
+			snprintf(pathname, sizeof(pathname), "%s/%s", ptr,
+			    basename);
 		}
 		else
 #endif
 		{
-			strcpy(pathname, basename);
+			strlcpy(pathname, basename, sizeof(pathname));
 		}
 	}
 
@@ -67,6 +64,8 @@
 	 * version of this file.
 	 */
 	from = fopen(PRSVINDEX, "r");
+	if (!from)
+		err(1, "fopen() %s failed", PRSVINDEX);
 	while (from && fgets(line, sizeof line, from))
 	{
 		/* strip off the newline from the end of the string */
OpenPOWER on IntegriCloud