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 <canyonkni...@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

Reply via email to