lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAHp75VcjiTFuUPHQJzVdL6Q-_UQUyZvs5La2tbrNW_ycg+YPbg@mail.gmail.com>
Date:   Thu, 14 Jun 2018 11:59:54 +0300
From:   Andy Shevchenko <andy.shevchenko@...il.com>
To:     Thierry Escande <thierry.escande@...aro.org>
Cc:     Andrew Morton <akpm@...ux-foundation.org>,
        David Miller <davem@...emloft.net>,
        Petr Mladek <pmladek@...e.com>,
        Rasmus Villemoes <linux@...musvillemoes.dk>,
        "Tobin C . Harding" <me@...in.cc>,
        Linux Kernel Mailing List <linux-kernel@...r.kernel.org>
Subject: Re: [PATCH v3] lib/test_printf.c: accept "ptrval" as valid result for
 plain 'p' tests

On Wed, Jun 13, 2018 at 8:18 PM, Thierry Escande
<thierry.escande@...aro.org> wrote:
> If the test_printf module is loaded before the crng is initialized, the
> plain 'p' tests will fail because the printed address will not be hashed
> and the buffer will contain "(____ptrval____)" or "(ptrval)" instead
> (64-bit vs 32-bit).
> Since we cannot wait for the crng to be initialized for an undefined
> time, both plain 'p' tests now accept the strings "(____ptrval____)" or
> "(ptrval)" as a valid result and print a warning message.
>

LGTM.
Reviewed-by: Andy Shevchenko <andy.shevchenko@...il.com>

> Signed-off-by: Thierry Escande <thierry.escande@...aro.org>
> ---
>
> Changes in v3:
> - Use "(____ptrval____)" for 64-bit
> - Update commit message headline
>
> Changes in v2:
> - Remove wait_for_random_bytes() usage
> - Remove Acked-by from Tobin as the proposed solution is not the same
>   anymore.
>
>  lib/test_printf.c | 24 ++++++++++++++++++++++--
>  1 file changed, 22 insertions(+), 2 deletions(-)
>
> diff --git a/lib/test_printf.c b/lib/test_printf.c
> index 71ebfa43ad05..31f00b8ca657 100644
> --- a/lib/test_printf.c
> +++ b/lib/test_printf.c
> @@ -206,6 +206,7 @@ test_string(void)
>  #define PTR_WIDTH 16
>  #define PTR ((void *)0xffff0123456789ab)
>  #define PTR_STR "ffff0123456789ab"
> +#define PTR_VAL_NO_CRNG "(____ptrval____)"
>  #define ZEROS "00000000"       /* hex 32 zero bits */
>
>  static int __init
> @@ -216,7 +217,16 @@ plain_format(void)
>
>         nchars = snprintf(buf, PLAIN_BUF_SIZE, "%p", PTR);
>
> -       if (nchars != PTR_WIDTH || strncmp(buf, ZEROS, strlen(ZEROS)) != 0)
> +       if (nchars != PTR_WIDTH)
> +               return -1;
> +
> +       if (strncmp(buf, PTR_VAL_NO_CRNG, PTR_WIDTH) == 0) {
> +               pr_warn("crng possibly not yet initialized. plain 'p' buffer contains \"%s\"",
> +                       PTR_VAL_NO_CRNG);
> +               return 0;
> +       }
> +
> +       if (strncmp(buf, ZEROS, strlen(ZEROS)) != 0)
>                 return -1;
>
>         return 0;
> @@ -227,6 +237,7 @@ plain_format(void)
>  #define PTR_WIDTH 8
>  #define PTR ((void *)0x456789ab)
>  #define PTR_STR "456789ab"
> +#define PTR_VAL_NO_CRNG "(ptrval)"
>
>  static int __init
>  plain_format(void)
> @@ -245,7 +256,16 @@ plain_hash(void)
>
>         nchars = snprintf(buf, PLAIN_BUF_SIZE, "%p", PTR);
>
> -       if (nchars != PTR_WIDTH || strncmp(buf, PTR_STR, PTR_WIDTH) == 0)
> +       if (nchars != PTR_WIDTH)
> +               return -1;
> +
> +       if (strncmp(buf, PTR_VAL_NO_CRNG, PTR_WIDTH) == 0) {
> +               pr_warn("crng possibly not yet initialized. plain 'p' buffer contains \"%s\"",
> +                       PTR_VAL_NO_CRNG);
> +               return 0;
> +       }
> +
> +       if (strncmp(buf, PTR_STR, PTR_WIDTH) == 0)
>                 return -1;
>
>         return 0;
> --
> 2.14.1
>



-- 
With Best Regards,
Andy Shevchenko

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ