[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