diff --git a/databases/adminer/Makefile b/databases/adminer/Makefile index b8372b3a5209..8b637dc367a2 100644 --- a/databases/adminer/Makefile +++ b/databases/adminer/Makefile @@ -1,44 +1,45 @@ PORTNAME= adminer DISTVERSION= 5.3.0 -PORTREVISION= 1 +PORTREVISION= 2 CATEGORIES= databases www MASTER_SITES= https://github.com/vrana/${PORTNAME}/releases/download/v${DISTVERSION}/ PKGNAMEPREFIX= ${PHP_PKGNAMEPREFIX} DISTFILES= ${PORTNAME}-${DISTVERSION}.php ${PORTNAME}-${DISTVERSION}.zip EXTRACT_ONLY= ${PORTNAME}-${DISTVERSION}.zip MAINTAINER= pkaipila@gmail.com -COMMENT= Full-featured database management tool written in PHP +COMMENT= Full-featured database management tool in a single PHP file WWW= https://www.adminer.org LICENSE= APACHE20 USES= cpe php:build,flavors USE_PHP= phar session zlib NO_ARCH= yes PLIST_SUB= WWWGRP="${WWWGRP}" \ WWWOWN="${WWWOWN}" OPTIONS_DEFINE= MYSQL PGSQL SQLITE OPTIONS_DEFAULT= MYSQL SQLITE MYSQL_DESC= MySQL and MariaDB driver PGSQL_DESC= PostgreSQL driver SQLITE_DESC= SQLite driver MYSQL_USE= PHP=mysqli PGSQL_USE= PHP=pgsql SQLITE_USE= PHP=sqlite3 do-build: ${CP} ${DISTDIR}/${PORTNAME}-${DISTVERSION}.php ${WRKSRC}/${PORTNAME}.php ${CP} ${FILESDIR}/makephar.php ${WRKSRC} ${LOCALBASE}/bin/php -d phar.readonly=0 ${WRKSRC}/makephar.php do-install: ${MKDIR} ${STAGEDIR}${WWWDIR} ${INSTALL_DATA} ${WRKSRC}/index.php ${STAGEDIR}${WWWDIR} + ${INSTALL_DATA} ${FILESDIR}/adminer-plugins-example.php ${STAGEDIR}${WWWDIR} .include diff --git a/databases/adminer/files/adminer-plugins-example.php b/databases/adminer/files/adminer-plugins-example.php new file mode 100644 index 000000000000..61400c6dc82b --- /dev/null +++ b/databases/adminer/files/adminer-plugins-example.php @@ -0,0 +1,20 @@ +isFile()) { $contents = php_strip_whitespace($file->getRealPath()); - $pharFile = 'adminer-plugins/' . $file->getFileName(); - $plugins[$pharFile] = $contents; - if (preg_match('/class\s(A[a-zA-Z]+)\sextends\sAdminer/', $contents, $m)) - { + $fileName = $file->getFileName(); + $pharFile = 'adminer-plugins/' . $fileName; + + if ( + /** + * Skip affected plugin + * https://nvd.nist.gov/vuln/detail/CVE-2023-45197 + */ + $fileName !== 'file-upload.php' + /** + * Adminer editor's plugins are only relevant + * in Adminer editor. + */ + && !str_starts_with($fileName, 'editor') + && preg_match('/class\s(A[a-zA-Z0-9]+)\sextends\sAdminer/', $contents, $m) + ) { + $plugins[$pharFile] = $contents; $classMap[$m[1]] = $file->getFileName(); } } } +ksort($classMap); + $phar->setStub( sprintf( $stub, json_encode($classMap, JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT) ) ); $autoLoader = <<addFromString( 'autoload.php', $autoLoader ); foreach($plugins as $file => $contents) { $phar->addFromString( $file, $contents ); } $phar->addFromString( 'adminer.php', php_strip_whitespace(__DIR__ . '/adminer.php'), ); rename($tmpFile, __DIR__ . '/index.php'); diff --git a/databases/adminer/pkg-plist b/databases/adminer/pkg-plist index 25f47247234c..49cd2d84519e 100644 --- a/databases/adminer/pkg-plist +++ b/databases/adminer/pkg-plist @@ -1,4 +1,5 @@ @owner %%WWWOWN%% @group %%WWWGRP%% @mode 0644 %%WWWDIR%%/index.php +%%WWWDIR%%/adminer-plugins-example.php