diff --git a/recode-3.6.tar.gz b/recode-3.6.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..1ccae6f5d70f43999333443bdeffeb6ca26b3b90 Binary files /dev/null and b/recode-3.6.tar.gz differ diff --git a/recode-3.7.6.tar.gz b/recode-3.7.6.tar.gz deleted file mode 100644 index d1c6ad98a4a484849dfe6584c6537e9459b21a2e..0000000000000000000000000000000000000000 Binary files a/recode-3.7.6.tar.gz and /dev/null differ diff --git a/recode-automake.patch b/recode-automake.patch new file mode 100644 index 0000000000000000000000000000000000000000..d0916c8cbb5491de8f523fe21a24cd482cfe5ee2 --- /dev/null +++ b/recode-automake.patch @@ -0,0 +1,22 @@ +--- recode-3.6.orig/configure.in 2001-01-03 16:50:54.000000000 +0100 ++++ recode-3.6/configure.in 2012-07-23 14:15:28.000000000 +0200 +@@ -15,7 +15,7 @@ + AM_PROG_LIBTOOL + + AC_ISC_POSIX +-AM_C_PROTOTYPES ++dnl AM_C_PROTOTYPES + AC_C_CONST + AC_C_INLINE + ad_AC_PROG_FLEX +--- recode-3.6.orig/src/Makefile.am 2000-12-06 17:36:12.000000000 +0100 ++++ recode-3.6/src/Makefile.am 2012-07-23 14:47:07.000000000 +0200 +@@ -17,7 +17,7 @@ + # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + # 02111-1307, USA. + +-AUTOMAKE_OPTIONS = gnits ansi2knr ++AUTOMAKE_OPTIONS = gnits + bin_PROGRAMS = recode + lib_LTLIBRARIES = librecode.la + man_MANS = recode.1 diff --git a/recode-bool-bitfield.patch b/recode-bool-bitfield.patch new file mode 100644 index 0000000000000000000000000000000000000000..899edc5d7b201fac9a31180f638bdab0be35e0ac --- /dev/null +++ b/recode-bool-bitfield.patch @@ -0,0 +1,11 @@ +--- a/src/recodext.h.orig 2008-01-16 13:15:39.000000000 +0100 ++++ b/src/recodext.h 2008-01-16 13:16:47.000000000 +0100 +@@ -218,7 +218,7 @@ + enum recode_symbol_type type : 3; + + /* Non zero if this one should be ignored. */ +- bool ignore : 2; ++ bool ignore : 1; + }; + + struct recode_surface_list diff --git a/recode-flex-m4.patch b/recode-flex-m4.patch new file mode 100644 index 0000000000000000000000000000000000000000..e63bdbf25c4a238f4f5183fe53bcf3b223d250e2 --- /dev/null +++ b/recode-flex-m4.patch @@ -0,0 +1,16 @@ +--- recode-3.6-orig/m4/flex.m4 2000-06-28 16:39:06.000000000 +0200 ++++ recode-3.6/m4/flex.m4 2010-07-07 12:23:49.000000000 +0200 +@@ -8,11 +8,8 @@ + dnl Look for flex or missing, then run AC_PROG_LEX and AC_DECL_YYTEXT + AC_DEFUN(ad_AC_PROG_FLEX, + [AC_CHECK_PROGS(LEX, flex, missing) +-if test "$LEX" = missing; then ++AS_IF([test "$LEX" = missing], [ + LEX="\$(top_srcdir)/$ac_aux_dir/missing flex" + LEX_OUTPUT_ROOT=lex.yy + AC_SUBST(LEX_OUTPUT_ROOT)dnl +-else +- AC_PROG_LEX +- AC_DECL_YYTEXT +-fi]) ++])]) diff --git a/recode-format-security.patch b/recode-format-security.patch new file mode 100644 index 0000000000000000000000000000000000000000..756ba3ff5637e2e97fa80b815baf1d06071d97e2 --- /dev/null +++ b/recode-format-security.patch @@ -0,0 +1,12 @@ +diff -up recode-3.6/src/names.c.printf recode-3.6/src/names.c +--- recode-3.6/src/names.c.printf 2000-12-06 20:41:29.000000000 +0100 ++++ recode-3.6/src/names.c 2013-12-18 12:48:42.578052395 +0100 +@@ -892,7 +892,7 @@ list_concise_charset (RECODE_OUTER outer + if (ucs2 >= 0) + printf (format, code); + else if (mnemonic || counter2 != 112) +- printf (blanks); ++ printf ("%s", blanks); + + if (mnemonic) + printf (counter2 == 112 ? " %s\n" : " %-3s", mnemonic); diff --git a/recode-longfilename.patch b/recode-longfilename.patch new file mode 100644 index 0000000000000000000000000000000000000000..fb9f99e74377aca4cea8e3fb6a270b20bce753ab --- /dev/null +++ b/recode-longfilename.patch @@ -0,0 +1,51 @@ +diff -u -r recode-3.6.orig/src/common.h recode-3.6/src/common.h +--- recode-3.6.orig/src/common.h 2000-06-28 20:40:15.000000000 +0200 ++++ recode-3.6/src/common.h 2017-10-03 13:52:09.904644383 +0200 +@@ -56,13 +56,14 @@ + # define RETSIGTYPE void + #endif + +-#if DIFF_HASH +-# ifdef HAVE_LIMITS_H +-# include +-# endif +-# ifndef CHAR_BIT +-# define CHAR_BIT 8 +-# endif ++#ifdef HAVE_LIMITS_H ++# include ++#endif ++#ifndef CHAR_BIT ++# define CHAR_BIT 8 ++#endif ++#ifndef PATH_MAX ++# define PATH_MAX 4096 + #endif + + /* Some systems do not define EXIT_*, even with STDC_HEADERS. */ +diff -u -r recode-3.6.orig/src/main.c recode-3.6/src/main.c +--- recode-3.6.orig/src/main.c 2000-12-06 20:44:59.000000000 +0100 ++++ recode-3.6/src/main.c 2017-10-03 14:32:51.274017940 +0200 +@@ -847,7 +847,7 @@ + for (; optind < argc; optind++) + { + const char *input_name; +- char output_name[200]; /* FIXME: dangerous limit */ ++ char output_name[PATH_MAX]; + FILE *file; + struct stat file_stat; + struct utimbuf file_utime; +@@ -871,7 +871,12 @@ + + /* FIXME: Scott Schwartz writes: + "There's no reason to think that that name is unique." */ +- ++ // To avoid overflows, the size of the array pointed by destination (output_name) ++ // shall be long enough to contain the same C string as source ++ // (including the terminating null character). ++ if (strlen(input_name) >= PATH_MAX) { ++ error (EXIT_FAILURE, 0, "input_name reach the PATH_MAX limit"); ++ } + strcpy (output_name, input_name); + #if DOSWIN_OR_OS2 + for (cursor = output_name + strlen (output_name); diff --git a/recode.patch b/recode.patch new file mode 100644 index 0000000000000000000000000000000000000000..4a9f2dd26868d86f31d4a4af212896ab6221263b --- /dev/null +++ b/recode.patch @@ -0,0 +1,68 @@ +--- recode-3.6.orig/src/libiconv.c ++++ recode-3.6/src/libiconv.c +@@ -1,5 +1,5 @@ + /* Conversion of files between different charsets and surfaces. +- Copyright © 1999, 2000 Free Software Foundation, Inc. ++ Copyright © 1999, 2000, 2001 Free Software Foundation, Inc. + Contributed by François Pinard , 1999, + and Bruno Haible , 2000. + +@@ -195,12 +195,17 @@ + memcpy() doesn't do here, because the regions might overlap. + memmove() isn't worth it, because we rarely have to move more + than 12 bytes. */ +- if (input > input_buffer && input_left > 0) ++ cursor = input_buffer; ++ if (input_left > 0) + { +- cursor = input_buffer; +- do +- *cursor++ = *input++; +- while (--input_left > 0); ++ if (input > input_buffer) ++ { ++ do ++ *cursor++ = *input++; ++ while (--input_left > 0); ++ } ++ else ++ cursor += input_left; + } + } + +--- recode-3.6.orig/src/request.c ++++ recode-3.6/src/request.c +@@ -1073,7 +1073,7 @@ + if (task->output.cursor + 4 >= task->output.limit) + { + RECODE_OUTER outer = task->request->outer; +- size_t old_size = task->output.limit - task->output.buffer; ++ size_t old_size = task->output.cursor - task->output.buffer; + size_t new_size = task->output.cursor + 4 - task->output.buffer; + + /* FIXME: Rethink about how the error should be reported. */ +--- recode-3.6.orig/src/task.c ++++ recode-3.6/src/task.c +@@ -1198,6 +1198,8 @@ + else + success = transform_mere_copy (subtask); + ++ task->output = subtask->output; ++ + if (subtask->input.name && *subtask->input.name) + fclose (subtask->input.file); + if (subtask->output.name && *subtask->output.name) +--- recode-3.6.orig/src/hash.h ++++ recode-3.6/src/hash.h +@@ -21,6 +21,11 @@ + /* Make sure USE_OBSTACK is defined to 1 if you want the allocator to use + obstacks instead of malloc, and recompile `hash.c' with same setting. */ + ++#define hash_lookup recode_hash_lookup ++#define hash_delete recode_hash_delete ++#define hash_free recode_hash_free ++#define hash_insert recode_hash_insert ++ + #ifndef PARAMS + # if PROTOTYPES || __STDC__ + # define PARAMS(Args) Args diff --git a/recode.spec b/recode.spec index 947093b79cc61805971d3816cf2ecb95e9b048e5..7ad4657d3f4bd9962f6833b7e52f50331f824d14 100644 --- a/recode.spec +++ b/recode.spec @@ -1,6 +1,6 @@ Name: recode -Version: 3.7.6 -Release: 1 +Version: 3.6 +Release: 50 Summary: Converter between charsets and surfaces @@ -8,6 +8,13 @@ License: GPLv2 and LGPLv2.1 URL: https://www.gnu.org/software/recode/ Source0: https://github.com/rrthomas/recode/archive/v%{version}.tar.gz#/%{name}-%{version}.tar.gz +Patch0: recode.patch +Patch1: recode-bool-bitfield.patch +Patch2: recode-flex-m4.patch +Patch3: recode-automake.patch +Patch4: recode-format-security.patch +Patch5: recode-longfilename.patch + BuildRequires: libtool texinfo Requires: info @@ -87,12 +94,6 @@ fi %{_mandir}/man1/*.1.gz %changelog -* Thu Jul 23 2020 shixuantong - 3.7.6-1 -- Type:NA -- ID:NA -- SUG:NA -- DESC:update to 3.7.6-1 - * Sat Jan 11 2020 zhangguangzhi - 3.6-50 - Type:bugfix - ID:NA