From 587433c497058e3ec4de064558928f2c1fda2787 Mon Sep 17 00:00:00 2001 From: David Anderson Date: Wed, 23 Jan 2019 18:49:23 -0800 Subject: [PATCH] AOSP: e2fsdroid: Fix incorrect error value handling. Methods returning 0 or -1 should not pass their return value to com_err. Also, errno values should not be negated when passed to com_err or through errcode_t. Signed-off-by: Theodore Ts'o Bug: N/A Test: manual test Change-Id: I5e25cf2deeee72668bf0ab58337ee582bf14bbc1 From AOSP commit: 0468e33fba75dbf60877ef14ecee7b0b60f756df --- contrib/android/perms.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/contrib/android/perms.c b/contrib/android/perms.c index 3c42e59..9c5ec05 100644 --- a/contrib/android/perms.c +++ b/contrib/android/perms.c @@ -81,9 +81,10 @@ static errcode_t set_selinux_xattr(ext2_filsys fs, ext2_ino_t ino, retval = selabel_lookup(params->sehnd, &secontext, params->filename, inode.i_mode); if (retval < 0) { - com_err(__func__, retval, + int saved_errno = errno; + com_err(__func__, errno, _("searching for label \"%s\""), params->filename); - return retval; + return saved_errno; } retval = ino_add_xattr(fs, ino, "security." XATTR_SELINUX_SUFFIX, @@ -187,7 +188,7 @@ static errcode_t set_timestamp(ext2_filsys fs, ext2_ino_t ino, } retval = lstat(src_filename, &stat); if (retval < 0) { - com_err(__func__, retval, + com_err(__func__, errno, _("while lstat file %s"), src_filename); goto end; } @@ -339,18 +340,19 @@ errcode_t android_configure_fs(ext2_filsys fs, char *src_dir, char *target_out, if (nopt > 0) { sehnd = selabel_open(SELABEL_CTX_FILE, seopts, nopt); if (!sehnd) { - com_err(__func__, -EINVAL, + int saved_errno = errno; + com_err(__func__, errno, _("while opening file contexts \"%s\""), seopts[0].value); - return -EINVAL; + return saved_errno; } } #else sehnd = selinux_android_file_context_handle(); if (!sehnd) { - com_err(__func__, -EINVAL, + com_err(__func__, EINVAL, _("while opening android file_contexts")); - return -EINVAL; + return EINVAL; } #endif -- 1.8.3.1