Fix printf() and friends to always contain format string (#1037351)

This commit is contained in:
Jindrich Novy 2013-12-27 03:56:04 +01:00
parent f9db42644a
commit 0661363df6
3 changed files with 234 additions and 0 deletions

View File

@ -47,6 +47,7 @@ Obsoletes: texlive-texmf-errata-latex < %{tl_version}, texlive-texmf-errata-xete
Conflicts: texlive-dvips = 2007
Patch1: tl-kpfix.patch
Patch2: tl-testfix.patch
Patch3: tl-format.patch
Source0: %{source_name}.tar.xz
Source1: tl2rpm.c
Source2: texlive.tlpdb
@ -200838,6 +200839,7 @@ xz -dc %{SOURCE0} | tar x
[ -e %{source_name} ] && mv %{source_name} source
%patch1 -p0
%patch2 -p0
%patch3 -p0
for l in `unxz -c %{SOURCE3} | tar t`; do
ln -s %{_texdir}/licenses/$l $l
done
@ -343104,6 +343106,7 @@ fi
- remove generated files upon update to avoid 'I'm stymified', etc.
- update co_source - upstream SVN checkout script
- disable Perl dependencies generation for F19 and older (#1023876)
- always have format in printf() #1037351
- fixes #921805, #952080, #1020941, #1025679, #1045794
- Merry Christmas!

View File

@ -47,6 +47,7 @@ Obsoletes: texlive-texmf-errata-latex < %{tl_version}, texlive-texmf-errata-xete
Conflicts: texlive-dvips = 2007
Patch1: tl-kpfix.patch
Patch2: tl-testfix.patch
Patch3: tl-format.patch
Source0: %{source_name}.tar.xz
Source1: tl2rpm.c
Source2: texlive.tlpdb
@ -108,6 +109,7 @@ xz -dc %{SOURCE0} | tar x
[ -e %{source_name} ] && mv %{source_name} source
%patch1 -p0
%patch2 -p0
%patch3 -p0
for l in `unxz -c %{SOURCE3} | tar t`; do
ln -s %{_texdir}/licenses/$l $l
done
@ -384,6 +386,7 @@ fi
- remove generated files upon update to avoid 'I'm stymified', etc.
- update co_source - upstream SVN checkout script
- disable Perl dependencies generation for F19 and older (#1023876)
- always have format in printf() #1037351
- fixes #921805, #952080, #1020941, #1025679, #1045794
- Merry Christmas!

228
tl-format.patch Normal file
View File

@ -0,0 +1,228 @@
diff -up source/texk/devnag/src/devnag.c.format source/texk/devnag/src/devnag.c
--- source/texk/devnag/src/devnag.c.format 2013-12-22 17:03:35.000000000 +0100
+++ source/texk/devnag/src/devnag.c 2013-12-26 20:13:56.390766885 +0100
@@ -2395,7 +2395,7 @@ void put_macro(short macro) {
void err_ill(const char *str) {
fprintf(stderr, "Error: illegal character(s) \"%s\" detected at line %d:\n",
str, linenumber);
- fprintf(stderr, inbuf);
+ fprintf(stderr, "%s", inbuf);
exit(1);
}
diff -up source/texk/dvidvi/dvidvi.c.format source/texk/dvidvi/dvidvi.c
--- source/texk/dvidvi/dvidvi.c.format 2013-12-22 17:03:36.000000000 +0100
+++ source/texk/dvidvi/dvidvi.c 2013-12-26 20:13:56.390766885 +0100
@@ -327,7 +327,7 @@ static void stringdvibuf(integer p, inte
* Print a usage error messsage, and quit.
*/
static void usage(void) {
- (void)fprintf(stderr,banner);
+ (void)fprintf(stderr,"%s",banner);
(void)fprintf(stderr,"Usage: dvidvi [options] input[.dvi] [output]\n");
(void)fprintf(stderr,"where options are:\n");
(void)fprintf(stderr," [-f n] first page printed [-l n] last page printed\n");
@@ -806,7 +806,7 @@ default:
} /* else argument with '-' */
} /* for */
if (*iname == 0) {
- (void)fprintf(stderr, banner) ;
+ (void)fprintf(stderr, "%s", banner) ;
error("! no input file specified");
}
/* Inserted by djc@dsmail.hmi.de 3.8.1994 */
@@ -817,7 +817,7 @@ default:
}
if (*oname != 0 && !quiet) {
- (void)fprintf(stderr, banner) ;
+ (void)fprintf(stderr, "%s", banner) ;
(void)fprintf(stderr, "%s -> %s\n",iname,oname);
temp = nextstring ;
}
diff -up source/texk/dvi2tty/dvi2tty-5.3.4/DVI.format source/texk/dvi2tty/dvi2tty-5.3.4/DVI
diff -up source/texk/ps2pkm/objects.h.format source/texk/ps2pkm/objects.h
--- source/texk/ps2pkm/objects.h.format 2013-12-22 17:03:29.000000000 +0100
+++ source/texk/ps2pkm/objects.h 2013-12-26 20:13:56.390766885 +0100
@@ -232,7 +232,7 @@ struct xobject {
/*SHARED*/
/* NDW: personally, I want to see status and error messages! */
#define IfTrace0(condition,model) \
- {if (condition) printf(model);}
+ {if (condition) printf("%s",model);}
#define IfTrace1(condition,model,arg0) \
{if (condition) printf(model,arg0);}
#define IfTrace2(condition,model,arg0,arg1) \
diff -up source/texk/web2c/cwebboot.cin.format source/texk/web2c/cwebboot.cin
--- source/texk/web2c/cwebboot.cin.format 2013-12-22 17:03:30.000000000 +0100
+++ source/texk/web2c/cwebboot.cin 2013-12-26 20:13:56.390766885 +0100
@@ -1090,7 +1090,7 @@ void
fatal(const char*s,const char*t)
#line 1182 "cwebdir/common.w"
{
-if(*s)printf(s);
+if(*s)printf("%s",s);
err_print(t);
history= fatal_message;exit(wrap_up());
}
diff -up source/texk/web2c/cwebdir/common.c.format source/texk/web2c/cwebdir/common.c
--- source/texk/web2c/cwebdir/common.c.format 2013-12-22 17:03:31.000000000 +0100
+++ source/texk/web2c/cwebdir/common.c 2013-12-26 20:13:56.391766888 +0100
@@ -1063,7 +1063,7 @@ void
fatal(s,t)
char*s,*t;
{
-if(*s)printf(s);
+if(*s)printf("%s",s);
err_print(t);
history= fatal_message;exit(wrap_up());
}
diff -up source/texk/web2c/cwebdir/common.w.format source/texk/web2c/cwebdir/common.w
--- source/texk/web2c/cwebdir/common.w.format 2013-12-22 17:03:31.000000000 +0100
+++ source/texk/web2c/cwebdir/common.w 2013-12-26 20:13:56.391766888 +0100
@@ -1180,7 +1180,7 @@ concatenated to print the final error me
fatal(s,t)
char *s,*t;
{
- if (*s) printf(s);
+ if (*s) printf("%s",s);
err_print(t);
history=fatal_message; exit(wrap_up());
}
diff -up source/texk/web2c/cwebdir/cweave.w.format source/texk/web2c/cwebdir/cweave.w
--- source/texk/web2c/cwebdir/cweave.w.format 2013-12-22 17:03:31.000000000 +0100
+++ source/texk/web2c/cwebdir/cweave.w 2013-12-26 20:13:56.392766891 +0100
@@ -1784,7 +1784,7 @@ void
print_cat(c) /* symbolic printout of a category */
eight_bits c;
{
- printf(cat_name[c]);
+ printf("%s",cat_name[c]);
}
@ The token lists for translated \TEX/ output contain some special control
diff -up source/texk/web2c/omegafonts/error_routines.c.format source/texk/web2c/omegafonts/error_routines.c
--- source/texk/web2c/omegafonts/error_routines.c.format 2013-12-22 17:03:30.000000000 +0100
+++ source/texk/web2c/omegafonts/error_routines.c 2013-12-26 20:13:56.392766891 +0100
@@ -36,7 +36,7 @@ void
lex_error_0(const_string fmt)
{
fprintf(stderr, "line %d (lexing): ", line_number);
- fprintf(stderr, fmt);
+ fprintf(stderr, "%s", fmt);
fprintf(stderr, "\n");
}
@@ -68,7 +68,7 @@ void
yyerror(const_string fmt)
{
fprintf(stderr, "line %d (parsing): ", line_number);
- fprintf(stderr, fmt);
+ fprintf(stderr, "%s", fmt);
fprintf(stderr, "\n");
}
@@ -77,7 +77,7 @@ void
warning_0(const_string fmt)
{
fprintf(stderr, "line %d (warning): ", line_number);
- fprintf(stderr, fmt);
+ fprintf(stderr, "%s", fmt);
fprintf(stderr, "\n");
}
@@ -125,7 +125,7 @@ void
fatal_error_0(const_string fmt)
{
fprintf(stderr, "line %d (fatal): ", line_number);
- fprintf(stderr, fmt);
+ fprintf(stderr, "%s", fmt);
fprintf(stderr, "\n");
exit(1);
}
@@ -161,7 +161,7 @@ void
internal_error_0(const_string fmt)
{
fprintf(stderr, "line %d (internal): ", line_number);
- fprintf(stderr, fmt);
+ fprintf(stderr, "%s", fmt);
fprintf(stderr, "\n");
exit(2);
}
diff -up source/texk/web2c/omegafonts/out_routines.c.format source/texk/web2c/omegafonts/out_routines.c
--- source/texk/web2c/omegafonts/out_routines.c.format 2013-12-22 17:03:30.000000000 +0100
+++ source/texk/web2c/omegafonts/out_routines.c 2013-12-26 20:13:56.392766891 +0100
@@ -383,5 +383,5 @@ out_digits(unsigned counter)
void
out(const_string sval)
{
- fprintf(file_output, sval);
+ fprintf(file_output, "%s", sval);
}
diff -up source/texk/web2c/tiedir/tie.c.format source/texk/web2c/tiedir/tie.c
--- source/texk/web2c/tiedir/tie.c.format 2013-12-22 17:03:31.000000000 +0100
+++ source/texk/web2c/tiedir/tie.c 2013-12-26 20:13:56.392766891 +0100
@@ -27,14 +27,14 @@
\
#define term_out stdout
-#define print(a)fprintf(term_out,a)
+#define print(a)fprintf(term_out,"%s",a)
#define print2(a,b)fprintf(term_out,a,b)
#define print3(a,b,c)fprintf(term_out,a,b,c)
#define print_c(v)fputc(v,term_out);
#define new_line(v)fputc('\n',v)
#define term_new_line new_line(term_out) \
-#define print_ln(v){fprintf(term_out,v);term_new_line;} \
+#define print_ln(v){fprintf(term_out,"%s",v);term_new_line;} \
#define print2_ln(a,b){print2(a,b);term_new_line;}
#define print3_ln(a,b,c){print3(a,b,c);term_new_line;} \
diff -up source/texk/web2c/tiedir/tie.w.format source/texk/web2c/tiedir/tie.w
--- source/texk/web2c/tiedir/tie.w.format 2013-12-22 17:03:31.000000000 +0100
+++ source/texk/web2c/tiedir/tie.w 2013-12-26 20:13:56.393766894 +0100
@@ -465,7 +465,7 @@ for terminating an output line and writi
@d new_line(v) fputc('\n',v) /* start new line */
@d term_new_line new_line(term_out)
/* start new line of the terminal */
-@d print_ln(v) {fprintf(term_out,v);term_new_line;}
+@d print_ln(v) {fprintf(term_out,"%s",v);term_new_line;}
/* `|print|' and then start new line */
@d print2_ln(a,b) {print2(a,b);term_new_line;} /* same with two arguments */
@d print3_ln(a,b,c) {print3(a,b,c);term_new_line;}
diff -up source/texk/xdvik/gui/message-window.c.format source/texk/xdvik/gui/message-window.c
--- source/texk/xdvik/gui/message-window.c.format 2013-12-22 17:03:30.000000000 +0100
+++ source/texk/xdvik/gui/message-window.c 2013-12-26 20:25:08.995961120 +0100
@@ -713,7 +713,7 @@ internal_popup_window(Widget parent,
Widget ret;
ASSERT(type < (sizeof my_msg_map / sizeof my_msg_map[0]), "too few elements in my_msg_map");
- sprintf(win_title, my_msg_map[type].window_title);
+ sprintf(win_title, "%s", my_msg_map[type].window_title);
#if DEBUG
fprintf(stderr, "internal_popup_window called with prompt: \"%s\"\n", msg_buf);
@@ -725,11 +725,11 @@ internal_popup_window(Widget parent,
supposed to be printf-format strings (i.e. with doubled `%' to escape them)
*/
fprintf(stderr, "\n%s:\n", my_msg_map[type].window_title);
- fprintf(stderr, msg_buf);
+ fprintf(stderr, "%s", msg_buf);
fprintf(stderr, "\n");
if (helptext) {
fprintf(stderr, "---------- helptext ----------\n");
- fprintf(stderr, helptext);
+ fprintf(stderr, "%s", helptext);
fprintf(stderr, "\n---------- end of helptext ----------\n");
}
return NULL;
@@ -741,7 +741,7 @@ internal_popup_window(Widget parent,
if (my_popup_num == MAX_POPUPS) {
/* already enough popups on screen, just dump it to stderr */
fprintf(stderr, "%s: ", win_title);
- fprintf(stderr, msg_buf);
+ fprintf(stderr, "%s", msg_buf);
fputc('\n', stderr);
/* Note: If a mad function continues to open popups, this will
* stop after MAX_POPUPS, but open a new window for each