Bug 783440

Summary: Add __format__((printf)) annotation to avc_log_callback
Product: Red Hat Enterprise Linux 6 Reporter: Daniel Berrangé <berrange>
Component: libselinuxAssignee: Daniel Walsh <dwalsh>
Status: CLOSED RAWHIDE QA Contact: BaseOS QE Security Team <qe-baseos-security>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 6.3CC: dwalsh, mgrepl
Target Milestone: rc   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: 783439 Environment:
Last Closed: 2012-01-24 16:05:21 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Bug Depends On: 783439    
Bug Blocks:    

Description Daniel Berrangé 2012-01-20 12:14:24 UTC
+++ This bug was initially created as a clone of Bug #783439 +++

Description of problem:
In libvirt we are implementing callbacks for the avc_log_callback struct. When compiling with -Werror=missing-format-attribute, we get a warning caused by the selinux/avc.h header file:

  CC     libvirt_driver_access_la-viraccessdriverselinux.lo
access/viraccessdriverselinux.c:59:5: error: initialization left-hand side might be a candidate for a format attribute [-Werror=missing-format-attribute]
access/viraccessdriverselinux.c: In function 'virAccessDriverSELinuxAVCCreateThread':
access/viraccessdriverselinux.c:247:9: error: expected expression before ')' token

This is caused by this struct definition:

struct avc_log_callback {
        /* log the printf-style format and arguments. */
        void (*func_log) (const char *fmt, ...);



Which should have an annotation like:

struct avc_log_callback {
        /* log the printf-style format and arguments. */
        void (*func_log) (const char *fmt, ...) __attribute__ ((__format__(printf, 1, 2)));


This ensures the compiler does strict argument checking


Version-Release number of selected component (if applicable):
libselinux-2.1.6-5.fc16.x86_64

Affects all Fedora releases & all RHEL

Comment 2 Daniel Walsh 2012-01-24 16:05:21 UTC
Fixed in libselinux-2.1.9-3.fc17