diff --git a/games-board/gnugo/files/gnugo-3.9.1-format-security.patch b/games-board/gnugo/files/gnugo-3.9.1-format-security.patch new file mode 100644 index 0000000000000..7828187c571df --- /dev/null +++ b/games-board/gnugo/files/gnugo-3.9.1-format-security.patch @@ -0,0 +1,60 @@ +diff --git a/patterns/dfa.c b/patterns/dfa.c +index 3689616..2d2f8c6 100644 +--- a/patterns/dfa.c ++++ b/patterns/dfa.c +@@ -279,7 +279,7 @@ resize_dfa(dfa_t *pdfa, int max_states, int max_indexes) + * dump a dfa (debugging purpose). + */ + +-static const char *line = ++static const char line[] = + "----------------------------------------------------\n"; + + void +diff --git a/patterns/mkpat.c b/patterns/mkpat.c +index 70a6964..5f1f1dd 100644 +--- a/patterns/mkpat.c ++++ b/patterns/mkpat.c +@@ -1419,7 +1419,7 @@ generate_autohelper_code(int funcno, int number_of_params, int *labels) + /* A common case. Just use the labels as parameters. */ + switch (number_of_params) { + case 0: +- code_pos += sprintf(code_pos, autohelper_functions[funcno].code); ++ code_pos += sprintf(code_pos, "%s", autohelper_functions[funcno].code); + break; + case 1: + code_pos += sprintf(code_pos, autohelper_functions[funcno].code, +diff --git a/patterns/uncompress_fuseki.c b/patterns/uncompress_fuseki.c +index 3290b05..c67a733 100644 +--- a/patterns/uncompress_fuseki.c ++++ b/patterns/uncompress_fuseki.c +@@ -224,9 +224,9 @@ main(int argc, char *argv[]) + + assert(boardsize > 0); + if (boardsize > MAX_BOARD) { +- printf(output_strings[PREAMBLE]); ++ printf("%s", output_strings[PREAMBLE]); + printf(output_strings[HEADER], boardsize); +- printf(output_strings[FOOTER]); ++ printf("%s", output_strings[FOOTER]); + return EXIT_SUCCESS; + } + +@@ -251,7 +251,7 @@ main(int argc, char *argv[]) + board[k][boardsize + 1] = '|'; + } + +- printf(output_strings[PREAMBLE]); ++ printf("%s", output_strings[PREAMBLE]); + printf(output_strings[HEADER], boardsize); + + +@@ -308,7 +308,7 @@ main(int argc, char *argv[]) + if (mode == C_OUTPUT) + write_pattern_c_code(NULL, board1d, NO_MOVE, 0, boardsize, -1); + +- printf(output_strings[FOOTER]); ++ printf("%s", output_strings[FOOTER]); + + return EXIT_SUCCESS; + } diff --git a/games-board/gnugo/gnugo-3.9.1-r2.ebuild b/games-board/gnugo/gnugo-3.9.1-r2.ebuild new file mode 100644 index 0000000000000..b78c0ed865e06 --- /dev/null +++ b/games-board/gnugo/gnugo-3.9.1-r2.ebuild @@ -0,0 +1,30 @@ +# Copyright 1999-2018 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 + +DESCRIPTION="A Go-playing program" +HOMEPAGE="https://www.gnu.org/software/gnugo/devel.html" +SRC_URI="mirror://gentoo/${P}.tar.gz" + +LICENSE="GPL-3" +SLOT="0" +KEYWORDS="~amd64 ~arm ~ppc64 ~x86 ~amd64-linux ~x86-linux ~ppc-macos" +IUSE="readline" + +RDEPEND=" + readline? ( sys-libs/readline:0= ) + >=sys-libs/ncurses-5.2-r3:0= +" +DEPEND="${RDEPEND}" + +PATCHES=( + "${FILESDIR}"/${P}-invalid-move.patch + "${FILESDIR}"/${P}-format-security.patch +) + +src_configure() { + econf \ + $(use_with readline) \ + --enable-cache-size=32 +}