$OpenBSD: patch-lib_cconv_c,v 1.2 2012/03/17 23:01:09 naddy Exp $ --- lib/cconv.c.orig Wed May 26 17:55:25 1999 +++ lib/cconv.c Sat Mar 17 16:58:01 2012 @@ -611,7 +611,7 @@ static char *rcsid = "$Id: cconv.c,v 10.8 1999/05/07 0 #define EPROC2(efunc, format, a) { \ char tmp[1024]; \ - (void)sprintf(tmp, format, a); \ + (void)snprintf(tmp, sizeof(tmp), format, a); \ eproc(efunc, tmp); } /* キーコードのエンコード方法 */ @@ -767,7 +767,7 @@ static wchar *promptsave(wchar *); static int parseLine(uchar *, uchar **, int); static FILE *openfile(char *); static int doinclude(uchar *, Files *, void (*)()); -static uchar *getline(uchar *, int, Files *, void (*)()); +static uchar *get_line(uchar *, int, Files *, void (*)()); static int readRuleFile(ccRule, char *); static int registMode(ccRule, int, uchar **); static int newMode(ccRule, Files *, _strbufRec *, _funcbufRec *, @@ -965,7 +965,7 @@ char *file; if (q == filename) continue; *q++ = '/'; *q = '\0'; - (void)Strcat(filename, file); + (void)strlcat(filename, file, sizeof(filename)); if ((fp = fopen(filename, "r")) != NULL) return fp; } @@ -973,8 +973,8 @@ char *file; /* デフォルトのサーチパス CCDEFPATH(/usr/lib/X11/ccdef) の * 下をサーチする */ - (void)Strcpy(filename, CCDEFPATH); - (void)Strcat(filename, file); + (void)strlcpy(filename, (char *)CCDEFPATH, sizeof(filename)); + (void)strlcat(filename, file, sizeof(filename)); fp = fopen(filename, "r"); } return fp; @@ -1013,7 +1013,7 @@ void (*efunc)(); } /* getline -- 1行読み込む (その際 include の処理を行なう) */ -static uchar *getline(line, linesize, files, efunc) +static uchar *get_line(line, linesize, files, efunc) uchar *line; int linesize; Files *files; @@ -1077,8 +1077,8 @@ char *file; rule->nmode = 0; rule->initialmode = -1; - while (getline(line, sizeof(line), &files, efunc)) { - (void)Strcpy(tmp, line); + while (get_line(line, sizeof(line), &files, efunc)) { + (void)strlcpy(tmp, line, sizeof(tmp)); if ((argc = parseLine(tmp, argv, 20)) == 0) continue; @@ -1246,7 +1246,7 @@ uchar **av; cdbuf.cdbuf = NULL; /* ルールを読んでストアする */ - while (getline(line, sizeof(line), files, efunc)) { + while (get_line(line, sizeof(line), files, efunc)) { /* '#' で始まる行はコメント */ if (*line == '\0' || *line == '\n' || *line == '#') continue; @@ -1302,7 +1302,7 @@ int *funcp; "context" key "result" [function...] */ - (void)Strcpy(tmp, line); + (void)strlcpy(tmp, line, sizeof(tmp)); ac = parseLine(tmp, av, 20); if (ac < 3) { EPROC2(efunc, "syntax error - %s", line); @@ -1885,7 +1885,7 @@ char *funcname; fnrec->funcnameend = cp + size; } - (void)strcpy(fnrec->funcnamep, funcname); + (void)strlcpy(fnrec->funcnamep, funcname, MOREFUNCNAMESIZE); fnrec->funcnames[nfunc] = fnrec->funcnamep - fnrec->funcnamebuf; fnrec->funcnamep += len;