Bug 783439 - Add __format__((printf)) annotation to avc_log_callback
Summary: Add __format__((printf)) annotation to avc_log_callback
Keywords:
Status: CLOSED NEXTRELEASE
Alias: None
Product: Fedora
Classification: Fedora
Component: libselinux
Version: 16
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: ---
Assignee: Daniel Walsh
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks: 783440
TreeView+ depends on / blocked
 
Reported: 2012-01-20 12:13 UTC by Daniel Berrangé
Modified: 2012-10-16 19:23 UTC (History)
2 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
: 783440 (view as bug list)
Environment:
Last Closed: 2012-10-16 19:23:14 UTC
Type: ---
Embargoed:


Attachments (Terms of Use)

Description Daniel Berrangé 2012-01-20 12:13:34 UTC
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


Note You need to log in before you can comment on or make changes to this bug.