Re: [aur-dev] [PATCH 4/8] Print error message when maximum DB character length is exceeded

2012-08-18 Thread Lukas Fleischer
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 
> ---
>  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


[aur-dev] [PATCH 4/8] Print error message when maximum DB character length is exceeded

2012-08-09 Thread canyonknight
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 
---
 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);
+   }
+   }
+
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