[aur-dev] [PATCH 4/8] Print error message when maximum DB character length is exceeded
Lukas Fleischer
archlinux at cryptocrack.de
Sat Aug 18 06:02:22 EDT 2012
On Thu, Aug 09, 2012 at 09:15:49PM -0400, canyonknight wrote:
> Packages can currently be submitted with variables longer than the maximum
> allowed by the DB for that specific field. The string will be shortened
> without informing the user. This can result in unexpected oddities on
> submitted packages. Print error messages informing the user when the package
> name, URL, description, license, or version is too long.
>
> Also move the resolution of full package version (including epoch) to an
> earlier point in pkgsubmit.php
>
> Signed-off-by: canyonknight <canyonknight at gmail.com>
> ---
> web/html/pkgsubmit.php | 35 +++++++++++++++++++++++++++++------
> 1 file changed, 29 insertions(+), 6 deletions(-)
>
> diff --git a/web/html/pkgsubmit.php b/web/html/pkgsubmit.php
> index e87279e..5783da4 100644
> --- a/web/html/pkgsubmit.php
> +++ b/web/html/pkgsubmit.php
> @@ -277,6 +277,35 @@ if ($uid):
> }
> }
>
> + # Determine the full package version with epoch
> + if (!$error) {
> + if (isset($new_pkgbuild['epoch']) && (int)$new_pkgbuild['epoch'] > 0) {
> + $pkg_version = sprintf('%d:%s-%s', $new_pkgbuild['epoch'], $new_pkgbuild['pkgver'], $new_pkgbuild['pkgrel']);
> + } else {
> + $pkg_version = sprintf('%s-%s', $new_pkgbuild['pkgver'], $new_pkgbuild['pkgrel']);
> + }
> + }
> +
> + # The DB schema imposes limitations on number of allowed characters
> + # Print error message when these limitations are exceeded
> + if (!$error) {
> + if (strlen($pkg_name) > 64) {
> + $error = __("Error - Package name cannot be greater than %s characters", 64);
> + }
> + if (strlen($new_pkgbuild['url']) > 255) {
> + $error = __("Error - Package URL cannot be greater than %s characters", 255);
> + }
> + if (strlen($new_pkgbuild['pkgdesc']) > 255) {
> + $error = __("Error - Package description cannot be greater than %s characters", 255);
> + }
> + if (strlen($new_pkgbuild['license']) > 40) {
> + $error = __("Error - Package license cannot be greater than %s characters", 40);
> + }
> + if (strlen($pkg_version) > 32) {
> + $error = __("Error - Package version cannot be greater than %s characters", 32);
> + }
Only one minor complaint: We should probably use "%d" here. The other
patches look fine to me -- thanks!
> + }
> +
> if (isset($pkg_name)) {
> $incoming_pkgdir = INCOMING_DIR . substr($pkg_name, 0, 2) . "/" . $pkg_name;
> }
> @@ -324,12 +353,6 @@ if ($uid):
>
> $pdata = pkgdetails_by_pkgname($new_pkgbuild['pkgname'], $dbh);
>
> - if (isset($new_pkgbuild['epoch']) && (int)$new_pkgbuild['epoch'] > 0) {
> - $pkg_version = sprintf('%d:%s-%s', $new_pkgbuild['epoch'], $new_pkgbuild['pkgver'], $new_pkgbuild['pkgrel']);
> - } else {
> - $pkg_version = sprintf('%s-%s', $new_pkgbuild['pkgver'], $new_pkgbuild['pkgrel']);
> - }
> -
> # Check the category to use, "1" meaning "none" (or "keep category" for
> # existing packages).
> if (isset($_POST['category'])) {
> --
> 1.7.11.4
More information about the aur-dev
mailing list