From: Michael Orlitzky Date: Fri, 10 Jun 2016 03:00:02 +0000 (-0400) Subject: ext/tidy: add support for the new tidy-html5 library. X-Git-Tag: php-7.1.0beta1~117 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a552ac5bd589035b66c899b74511b29a3d1a4718;p=php ext/tidy: add support for the new tidy-html5 library. Our existing libtidy support is based on the legacy "HTML tidy" project. That project now has a successor called tidy-html5, where all new features and bugfixes happen. Of particular note are the fixes for two security vulnerabilities, CVE-2015-5522 and CVE-2015-5523. The API is largely unchanged in the new project (which is truly the successor of the original -- not a fork), and so it is almost a drop-in replacement as far as PHP is concerned. However, one file has changed in the new project: "buffio.h" has been moved to "tidybuffio.h". This commit detects the presence of tidybuffio.h at build time, and then adjusts the import statement in tidy.c accordingly. The result is a build that works against either the legacy project or the new tidy-html5 project, although the test suite for the tidy extension now fails. Those failures are not critical and will be fixed. Gentoo-Bug: 561452 Gentoo-Bug: 585474 PHP-Bug: 72379 --- diff --git a/ext/tidy/config.m4 b/ext/tidy/config.m4 index ff27bd1aaa..da9351e991 100644 --- a/ext/tidy/config.m4 +++ b/ext/tidy/config.m4 @@ -25,6 +25,14 @@ if test "$PHP_TIDY" != "no"; then if test -z "$TIDY_DIR"; then AC_MSG_ERROR(Cannot find libtidy) + else + dnl Check for tidybuffio.h (as opposed to simply buffio.h) + dnl which indicates that we are building against tidy-html5 + dnl and not the legacy htmltidy. The two are compatible, + dnl except for with regard to this header file. + if test -f "$TIDY_INCDIR/tidybuffio.h"; then + AC_DEFINE(HAVE_TIDYBUFFIO_H,1,[defined if tidybuffio.h exists]) + fi fi TIDY_LIBDIR=$TIDY_DIR/$PHP_LIBDIR diff --git a/ext/tidy/tidy.c b/ext/tidy/tidy.c index 0537c576c7..d6461bd513 100644 --- a/ext/tidy/tidy.c +++ b/ext/tidy/tidy.c @@ -31,7 +31,12 @@ #include "ext/standard/info.h" #include "tidy.h" + +#if HAVE_TIDYBUFFIO_H +#include "tidybuffio.h" +#else #include "buffio.h" +#endif /* compatibility with older versions of libtidy */ #ifndef TIDY_CALL