Add upstream upmendex fix
OBS-URL: https://build.opensuse.org/package/show/Publishing:TeXLive/texlive?expand=0&rev=227
This commit is contained in:
parent
33ae544cbd
commit
8e42690f5b
@ -1,6 +1,7 @@
|
|||||||
---
|
---
|
||||||
utils/lacheck/lacheck.test | 3 ++-
|
texk/upmendex/fwrite.c | 62 +++++++++++++++++++++++----------------------
|
||||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
utils/lacheck/lacheck.test | 3 +-
|
||||||
|
2 files changed, 34 insertions(+), 31 deletions(-)
|
||||||
|
|
||||||
|--- texk/web2c/eptexdir/eptex.ech
|
|--- texk/web2c/eptexdir/eptex.ech
|
||||||
|+++ texk/web2c/eptexdir/eptex.ech 2012-04-16 08:31:14.564665420 +0000
|
|+++ texk/web2c/eptexdir/eptex.ech 2012-04-16 08:31:14.564665420 +0000
|
||||||
@ -30,23 +31,100 @@
|
|||||||
+diff $srcdir/test.old test.out || true
|
+diff $srcdir/test.old test.out || true
|
||||||
|
|
||||||
--- texk/upmendex/fwrite.c
|
--- texk/upmendex/fwrite.c
|
||||||
+++ texk/upmendex/fwrite.c 2016-06-14 12:59:55.681041860 +0000
|
+++ texk/upmendex/fwrite.c 2016-07-08 11:54:13.897971000 +0000
|
||||||
@@ -68,8 +68,8 @@ static inline int SAPPENDF(char *buf, co
|
@@ -67,33 +67,38 @@ static inline int SAPPENDF(char *buf, co
|
||||||
|
|
||||||
static void fprint_uchar(FILE *fp, const UChar *a, const int mode, const int len)
|
static void fprint_uchar(FILE *fp, const UChar *a, const int mode, const int len)
|
||||||
{
|
{
|
||||||
int k;
|
- int k;
|
||||||
- char str[15], *ret;
|
- char str[15], *ret;
|
||||||
- UChar istr[5];
|
- UChar istr[5];
|
||||||
+ char str[16], *ret;
|
+ char str[3*INITIALLENGTH+1];
|
||||||
+ UChar istr[INITIALLENGTH+1];
|
+ UChar istr[INITIALLENGTH];
|
||||||
int olen, wclen;
|
int olen, wclen;
|
||||||
UErrorCode perr;
|
UErrorCode perr;
|
||||||
|
|
||||||
@@ -92,6 +92,7 @@ static void fprint_uchar(FILE *fp, const
|
if (len<0) {
|
||||||
perr = U_ZERO_ERROR;
|
- for (k=0; a[k] || k<4; k++) istr[k]=a[k];
|
||||||
u_strToTitle(istr,5,istr,wclen,NULL,"",&perr);
|
- wclen=k;
|
||||||
|
+ u_strcpy(istr,a);
|
||||||
|
+ wclen=u_strlen(istr);
|
||||||
|
} else {
|
||||||
|
- wclen = is_surrogate_pair(a) ? 2 : 1;
|
||||||
|
+ wclen=is_surrogate_pair(a) ? 2 : 1;
|
||||||
|
istr[0]=a[0];
|
||||||
|
if (wclen==2) istr[1]=a[1];
|
||||||
|
+ istr[wclen]=L'\0';
|
||||||
}
|
}
|
||||||
+ memset(&str[0], 0, sizeof(str));
|
- istr[wclen]=L'\0';
|
||||||
perr = U_ZERO_ERROR;
|
if (mode==M_TO_UPPER) {
|
||||||
ret = u_strToUTF8(str, 15, &olen, istr, wclen, &perr);
|
- perr = U_ZERO_ERROR;
|
||||||
|
- u_strToUpper(istr,5,istr,wclen,"",&perr);
|
||||||
|
+ perr=U_ZERO_ERROR;
|
||||||
|
+ olen=u_strToUpper(istr,INITIALLENGTH,istr,wclen,"",&perr);
|
||||||
|
} else if (mode==M_TO_LOWER) {
|
||||||
|
- perr = U_ZERO_ERROR;
|
||||||
|
- u_strToLower(istr,5,istr,wclen, istr[0]==0x130&&turkish_i?"tr":"", &perr);
|
||||||
|
+ perr=U_ZERO_ERROR;
|
||||||
|
+ olen=u_strToLower(istr,INITIALLENGTH,istr,wclen, istr[0]==0x130&&turkish_i?"tr":"", &perr);
|
||||||
|
} else if (mode==M_TO_TITLE) {
|
||||||
|
- perr = U_ZERO_ERROR;
|
||||||
|
- u_strToTitle(istr,5,istr,wclen,NULL,"",&perr);
|
||||||
|
- }
|
||||||
|
- perr = U_ZERO_ERROR;
|
||||||
|
- ret = u_strToUTF8(str, 15, &olen, istr, wclen, &perr);
|
||||||
|
+ perr=U_ZERO_ERROR;
|
||||||
|
+ olen=u_strToTitle(istr,INITIALLENGTH,istr,wclen,NULL,"",&perr);
|
||||||
|
+ } else
|
||||||
|
+ olen=wclen;
|
||||||
|
+ if (olen>INITIALLENGTH) {
|
||||||
|
+ warn_printf(efp, "\nWarning, Too long (%d) header.\n", olen);
|
||||||
|
+ wclen=INITIALLENGTH;
|
||||||
|
+ } else
|
||||||
|
+ wclen=olen;
|
||||||
|
+ perr=U_ZERO_ERROR;
|
||||||
|
+ u_strToUTF8(str, 3*INITIALLENGTH+1, &olen, istr, wclen, &perr);
|
||||||
fprintf(fp,"%s",str);
|
fprintf(fp,"%s",str);
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -844,7 +849,7 @@ static int initial_cmp_char(UChar *ini,
|
||||||
|
static int init_hanzi_header(void)
|
||||||
|
{
|
||||||
|
UChar strX[2],*pch0,*pch1;
|
||||||
|
- int k, hzmode;
|
||||||
|
+ int k, hzmode, len;
|
||||||
|
struct hanzi_index *hz_idx_init;
|
||||||
|
|
||||||
|
strX[0]=0x5B57; strX[1]=L'\0';
|
||||||
|
@@ -878,21 +883,18 @@ static int init_hanzi_header(void)
|
||||||
|
for (k=0;k<hz_index_len;k++) {
|
||||||
|
if (u_strlen(pch0)==0) break;
|
||||||
|
if ((pch1=u_strchr(pch0,L';'))>0) {
|
||||||
|
- if (pch1-pch0>=INITIALLENGTH) {
|
||||||
|
- warn_printf(efp, "\nWarning, Too long hanzi header.\n");
|
||||||
|
- break;
|
||||||
|
- }
|
||||||
|
- u_strncpy(hz_index[k].idx,pch0,pch1-pch0);
|
||||||
|
- hz_index[k].idx[pch1-pch0]=L'\0';
|
||||||
|
- pch0=pch1+1;
|
||||||
|
+ len=pch1-pch0;
|
||||||
|
} else {
|
||||||
|
- if (u_strlen(pch0)>=INITIALLENGTH) {
|
||||||
|
- warn_printf(efp, "\nWarning, Too long hanzi header.\n");
|
||||||
|
- break;
|
||||||
|
- }
|
||||||
|
- u_strcpy(hz_index[k].idx,pch0);
|
||||||
|
- break;
|
||||||
|
+ len=u_strlen(pch0);
|
||||||
|
}
|
||||||
|
+ if (len>=INITIALLENGTH) {
|
||||||
|
+ warn_printf(efp, "\nWarning, Too long (%d) hanzi header.\n", len);
|
||||||
|
+ len=INITIALLENGTH-1;
|
||||||
|
+ }
|
||||||
|
+ u_strncpy(hz_index[k].idx,pch0,len);
|
||||||
|
+ hz_index[k].idx[len]=L'\0';
|
||||||
|
+ if (pch1>0) pch0=pch1+1;
|
||||||
|
+ else break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return hzmode;
|
||||||
|
@ -1,3 +1,9 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Fri Jul 8 12:06:53 UTC 2016 - werner@suse.de
|
||||||
|
|
||||||
|
- Use the latest revision of upmendex/fwrite.c (r.41498)
|
||||||
|
to get stack smashing fixed as well as a working upmendex
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Tue Jun 14 13:03:21 UTC 2016 - werner@suse.de
|
Tue Jun 14 13:03:21 UTC 2016 - werner@suse.de
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user