lkml.org 
[lkml]   [2019]   [Oct]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.19 049/114] ima: always return negative code for error
    Date
    From: Sascha Hauer <s.hauer@pengutronix.de>

    [ Upstream commit f5e1040196dbfe14c77ce3dfe3b7b08d2d961e88 ]

    integrity_kernel_read() returns the number of bytes read. If this is
    a short read then this positive value is returned from
    ima_calc_file_hash_atfm(). Currently this is only indirectly called from
    ima_calc_file_hash() and this function only tests for the return value
    being zero or nonzero and also doesn't forward the return value.
    Nevertheless there's no point in returning a positive value as an error,
    so translate a short read into -EINVAL.

    Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
    Signed-off-by: Mimi Zohar <zohar@linux.ibm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    security/integrity/ima/ima_crypto.c | 5 ++++-
    1 file changed, 4 insertions(+), 1 deletion(-)

    diff --git a/security/integrity/ima/ima_crypto.c b/security/integrity/ima/ima_crypto.c
    index d9e7728027c6c..b7822d2b79736 100644
    --- a/security/integrity/ima/ima_crypto.c
    +++ b/security/integrity/ima/ima_crypto.c
    @@ -271,8 +271,11 @@ static int ima_calc_file_hash_atfm(struct file *file,
    rbuf_len = min_t(loff_t, i_size - offset, rbuf_size[active]);
    rc = integrity_kernel_read(file, offset, rbuf[active],
    rbuf_len);
    - if (rc != rbuf_len)
    + if (rc != rbuf_len) {
    + if (rc >= 0)
    + rc = -EINVAL;
    goto out3;
    + }

    if (rbuf[1] && offset) {
    /* Using two buffers, and it is not the first
    --
    2.20.1


    \
     
     \ /
      Last update: 2019-10-10 10:58    [W:4.103 / U:0.028 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site