Hello,

On Mon, May 07, 2018 at 10:11:34AM +0300, [email protected] wrote:
> From: Riku Voipio <[email protected]>
> 
> There is multiple issues with the genaration of maintainer string
> 
> It uses DEBEMAIL and EMAIL enviroment variables, which may contain angle 
> brackets,
> creating invalid maintainer strings. The documented KBUILD_BUILD_USER and
> KBUILD_BUILD_HOST variables are not used. Undocumented and uncommon NAME
> variable is used. Refactor the Maintainer string to:
> 
> - use EMAIL or DEBEMAIL directly if they are in form "name <user@host>"
> - use KBUILD_BUILD_USER and KBUILD_BUILD_HOST if set before falling
>   back to autodetection
> - no longer use NAME variable or the useless Anonymous string
> 
> The logic is switched from multiline if/then/fi statements to compact
> shell variable substition commands.
> 
> Reported-by: Mathieu Malaterre <[email protected]>
> Signed-off-by: Riku Voipio <[email protected]>
> ---
> v2: include improvements suggested by Masahiro-san
> 
>  scripts/package/mkdebian | 27 +++++++++++++--------------
>  1 file changed, 13 insertions(+), 14 deletions(-)
> 
> diff --git a/scripts/package/mkdebian b/scripts/package/mkdebian
> index 6adb3a16ba3b..985d72d1ab34 100755
> --- a/scripts/package/mkdebian
> +++ b/scripts/package/mkdebian
> @@ -71,22 +71,21 @@ if [ "$ARCH" = "um" ] ; then
>       packagename=user-mode-linux-$version
>  fi
>  
> -# Try to determine maintainer and email values
> -if [ -n "$DEBEMAIL" ]; then
> -       email=$DEBEMAIL
> -elif [ -n "$EMAIL" ]; then
> -       email=$EMAIL
> -else
> -       email=$(id -nu)@$(hostname -f 2>/dev/null || hostname)
> -fi
> -if [ -n "$DEBFULLNAME" ]; then
> -       name=$DEBFULLNAME
> -elif [ -n "$NAME" ]; then
> -       name=$NAME
> +email=${DEBEMAIL-$EMAIL}
> +
> +# use email string directly if it contains <email>
> +if echo $email | grep -q '<.*>'; then
> +     maintainer=$email

Alternatively you can do:

        case "$email" in
        *\<*\>*)
                maintainer="$email"
                ;;
        *)
                ...

        esac

which might be a tad quicker because case is shell-builtin.

>  else
> -       name="Anonymous"
> +     # or construct the maintainer string
> +     user=${KBUILD_BUILD_USER-$(id -nu)}
> +     name=${DEBFULLNAME-$user}
> +     if [ -z "$email" ]; then
> +             buildhost=${KBUILD_BUILD_HOST-$(hostname -f 2>/dev/null || 
> hostname)}

On Debian machines there is also /etc/mailname which should be preferred
over hostname -f.

Best regards
Uwe

-- 
Pengutronix e.K.                           | Uwe Kleine-König            |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |

Reply via email to