Bug 989356

Summary: cap-get-file will return error if the file has not be set capabilities
Product: Red Hat Enterprise Linux 7 Reporter: bfan
Component: libguestfsAssignee: Richard W.M. Jones <rjones>
Status: CLOSED CURRENTRELEASE QA Contact: Virtualization Bugs <virt-bugs>
Severity: medium Docs Contact:
Priority: medium    
Version: 7.0CC: leiwang, wshi
Target Milestone: rc   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: libguestfs-1.22.5-2.el7 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: 989352 Environment:
Last Closed: 2014-06-13 12:42:10 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On: 989352    
Bug Blocks:    

Description bfan 2013-07-29 06:48:54 UTC
+++ This bug was initially created as a clone of Bug #989352 +++

Description of problem:
cap-get-file should not return error when the file has no capabilities, it's not grace. it's better do a further process to return NULL likes linux original command "getcap"


Version-Release number of selected component (if applicable):
libguestfs-1.20.9-6.el6.x86_64


How reproducible:
100%

Steps to Reproduce:
# guestfish -N fs -m /dev/sda1 touch /testfile : cap-get-file /testfile
libguestfs: error: cap_get_file: /testfile: No data available


Actual results:
guestfish return error


Expected results:
should return NULL


Additional info:
Same issue in rhel7(libguestfs1.22.4-2)


B.R
Fan Bo

Comment 1 Richard W.M. Jones 2013-07-29 13:28:38 UTC
Upstream 'getcap' utility (part of libcap) has the following code:

    cap_d = cap_get_file(fname);
    if (cap_d == NULL) {
        if (errno != ENODATA) {
            fprintf(stderr, "Failed to get capabilities of file `%s' (%s)\n",
                    fname, strerror(errno));
        } else if (verbose) {
            printf("%s\n", fname);
        }
        return 0;
    }

In other words, it's programmed to ignore the ENODATA error.

I will make a corresponding change to libguestfs.

Comment 4 bfan 2013-12-03 06:55:08 UTC
Verified with libguestfs-1.22.6-16.el7.x86_64

# guestfish -N fs -m /dev/sda1 touch /testfile : cap-get-file /testfile

#

It returns Null, that's what we expect.

Comment 5 Ludek Smid 2014-06-13 12:42:10 UTC
This request was resolved in Red Hat Enterprise Linux 7.0.

Contact your manager or support representative in case you have further questions about the request.