1 --- texk/makeindexk/mkind.c
2 +++ texk/makeindexk/mkind.c 2007-02-06 13:43:26.000000000 +0100
3 @@ -179,7 +179,9 @@ char *argv[];
6 FATAL("Expected -p <num>\n","");
7 - strcpy(pageno, *++argv);
8 + if (strlen(*++argv) >= sizeof(pageno))
9 + FATAL("Page number too high\n","");
10 + strcpy(pageno, *argv);
12 if (STREQ(pageno, EVEN)) {
14 @@ -227,10 +229,10 @@ char *argv[];
16 if (fn_no == 0 && !sty_given)
18 - char tmp[STRING_MAX + 5];
19 + char tmp[STRING_MAX];
21 /* base set by last call to check_idx */
22 - sprintf (tmp, "%s%s", base, INDEX_STY);
23 + snprintf (tmp, sizeof(tmp), "%s%s", base, INDEX_STY);
24 if (0 == access(tmp, R_OK)) {
27 @@ -407,7 +409,7 @@ int open_fn;
29 if ((idx_fn = (char *) malloc(STRING_MAX)) == NULL)
30 FATAL("Not enough core...abort.\n", "");
31 - sprintf(idx_fn, "%s%s", base, INDEX_IDX);
32 + snprintf(idx_fn, STRING_MAX, "%s%s", base, INDEX_IDX);
34 ((idx_fp = OPEN_IN(idx_fn)) == NULL)
36 @@ -434,7 +436,7 @@ int log_given;
38 /* index output file */
40 - sprintf(ind, "%s%s", base, INDEX_IND);
41 + snprintf(ind, sizeof(ind), "%s%s", base, INDEX_IND);
44 if ((ind_fp = OPEN_OUT(ind_fn)) == NULL)
45 @@ -442,14 +444,14 @@ int log_given;
47 /* index transcript file */
49 - sprintf(ilg, "%s%s", base, INDEX_ILG);
50 + snprintf(ilg, sizeof(ilg), "%s%s", base, INDEX_ILG);
53 if ((ilg_fp = OPEN_OUT(ilg_fn)) == NULL)
54 FATAL("Can't create transcript file %s.\n", ilg_fn);
57 - sprintf(log_fn, "%s%s", base, INDEX_LOG);
58 + snprintf(log_fn, sizeof(log_fn), "%s%s", base, INDEX_LOG);
59 if ((log_fp = OPEN_IN(log_fn)) == NULL) {
60 FATAL("Source log file %s not found.\n", log_fn);
62 @@ -505,6 +507,9 @@ char *fn;
63 if ((found = kpse_find_file (fn, kpse_ist_format, 1)) == NULL) {
64 FATAL("Index style file %s not found.\n", fn);
66 + if (strlen(found) >= sizeof(sty_fn)) {
67 + FATAL("Style file %s too long.\n", found);
70 if ((sty_fp = OPEN_IN(sty_fn)) == NULL) {
71 FATAL("Could not open style file %s.\n", sty_fn);
72 @@ -512,6 +517,9 @@ char *fn;
75 if ((path = getenv(STYLE_PATH)) == NULL) {
76 + if (strlen(fn) >= sizeof(sty_fn)) {
77 + FATAL("Style file %s too long.\n", fn);
79 /* style input path not defined */
81 sty_fp = OPEN_IN(sty_fn);
82 --- texk/makeindexk/mkind.h
83 +++ texk/makeindexk/mkind.h 2007-02-06 13:42:38.000000000 +0100
84 @@ -322,7 +322,7 @@ ensuing.
85 #ifdef LINE_MAX /* IBM RS/6000 AIX has this in <sys/limits.h> */
88 -#define LINE_MAX 72 /* maximum output line length (longer */
89 +#define LINE_MAX _POSIX2_LINE_MAX /* maximum output line length (longer */
90 /* ones wrap if possible) */
92 #define NUMBER_MAX 16 /* maximum digits in a Roman or Arabic */
93 @@ -337,7 +337,7 @@ ensuing.
94 #define ROMAN_MAX 16 /* maximum length of Roman page number */
97 -#define STRING_MAX 256 /* maximum length of host filename */
98 +#define STRING_MAX _POSIX2_LINE_MAX /* maximum length of host filename */
100 /*====================================================================*/