On Sun, 1 Jun 2014, Brent Cook wrote:
> clang warning:
> pem/pem_lib.c:472:6: error: variable 'i' is used uninitialized whenever
> 'if' condition is false [-Werror,-Wsometimes-uninitialized]
>         if (o)
>             ^
> pem/pem_lib.c:479:7: note: uninitialized use occurs here
>         j += i;
>              ^
> pem/pem_lib.c:472:2: note: remove the 'if' if its condition is always true
>         if (o)
>         ^~~~~~
> pem/pem_lib.c:446:7: note: initialize the variable 'i' to silence this
> warning int i, j, o, klen;
> ---
>  src/crypto/pem/pem_lib.c | 1 +
>  1 file changed, 1 insertion(+)
>
> diff --git a/src/crypto/pem/pem_lib.c b/src/crypto/pem/pem_lib.c
> index 945262f..92c3dc4 100644
> --- a/src/crypto/pem/pem_lib.c
> +++ b/src/crypto/pem/pem_lib.c
> @@ -454,6 +454,7 @@ PEM_do_header(EVP_CIPHER_INFO *cipher, unsigned char
> *data, long *plen, (unsigned char *)buf, klen, 1, key, NULL))
>               return 0;
>
> +     i = 0;
>       j = (int)len;
>       EVP_CIPHER_CTX_init(&ctx);
>       o = EVP_DecryptInit_ex(&ctx, cipher->cipher, NULL, key,

This is a non-issue since the value of j is unused in the !o case. That
said, I've just commited the following diff actually fixes the code,
rather than just addressing the uninitialised variable:

Index: pem_lib.c
===================================================================
RCS file: /cvs/src/lib/libssl/src/crypto/pem/pem_lib.c,v
retrieving revision 1.23
diff -u -p -r1.23 pem_lib.c
--- pem_lib.c   26 Apr 2014 18:56:38 -0000      1.23
+++ pem_lib.c   29 May 2014 15:39:26 -0000
@@ -476,12 +476,11 @@ PEM_do_header(EVP_CIPHER_INFO *cipher, u
        EVP_CIPHER_CTX_cleanup(&ctx);
        OPENSSL_cleanse((char *)buf, sizeof(buf));
        OPENSSL_cleanse((char *)key, sizeof(key));
-       j += i;
        if (!o) {
                PEMerr(PEM_F_PEM_DO_HEADER, PEM_R_BAD_DECRYPT);
                return (0);
        }
-       *plen = j;
+       *plen = j + i;
        return (1);
 }
 


-- 

    "Action without study is fatal. Study without action is futile."
        -- Mary Ritter Beard

Reply via email to