Bug 1034441 - Net-SNMP libraries and headers are invalid due to hyphens.
Summary: Net-SNMP libraries and headers are invalid due to hyphens.
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Red Hat Enterprise Linux 6
Classification: Red Hat
Component: net-snmp
Version: 6.4
Hardware: All
OS: Linux
medium
medium
Target Milestone: rc
: ---
Assignee: Jan Safranek
QA Contact: BaseOS QE Security Team
URL:
Whiteboard:
Depends On:
Blocks: 1038642 1075802
TreeView+ depends on / blocked
 
Reported: 2013-11-25 20:36 UTC by Bryan Totty
Modified: 2018-12-05 16:39 UTC (History)
4 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Cause: net-snmp-config.h contains preprocessor macros with hyphen characters ('-') in their name. However, '-' is not allowed in a macro name. Consequence: C compiler shows extra 'warning: extra tokens at end of #ifdef directive', when compiling anything, that includes net-snmp-config.h Fix: Rename the macros to use underscores instead hyphens. Result: No compiler warnings.
Clone Of:
: 1038642 (view as bug list)
Environment:
Last Closed: 2015-07-22 07:22:18 UTC
Target Upstream Version:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Red Hat Product Errata RHSA-2015:1385 0 normal SHIPPED_LIVE Moderate: net-snmp security and bug fix update 2015-07-20 18:07:39 UTC

Description Bryan Totty 2013-11-25 20:36:02 UTC
Description of problem:

Net-SNMP libraries and headers are invalid due to hyphens.

Version-Release number of selected component (if applicable):

gcc-4.4.7-4.el6.x86_64
libgcc-4.4.7-4.el6.x86_64
libgcc-4.4.7-4.el6.i686

How reproducible:

1. # vi test.c 

  #ifdef net-snmp-config_multilib_redirection_h
  #endif
  int main()
  {
  	        return 0;
  }


2. # gcc -o test test.c

  test.c:1:11: warning: extra tokens at end of #ifdef directive


Actual results:

The C program compiles but warns of: test.c:1:11: warning: extra tokens at end of #ifdef directive.

Remove the hyphens from the #ifdef and #define directives and the problem is fixed.


Expected results:

Absence of the extra token message.


Additional info:

Non-conformance of standards. C11 and C99 have a section under 6.4.2.1 that describes what is considered valid syntax for an identifier, which includes pre-processor macro identifiers.

http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf is the standard document for C99 which provides a reference.

Upon consideration of what is considered a valid identifier per C99, "net-snmp-config_multilib_redirection_h" is not a valid identifier because it contains a hyphen. The hyphen is not in the list of characters that are acceptable in an identifier.

Comment 1 Bryan Totty 2013-11-25 20:38:17 UTC
Affects current net-snmp packages in RHEL 6.5:

net-snmp-libs-5.5-44.el6_4.4.x86_64
net-snmp-devel-5.5-44.el6_4.4.x86_64
net-snmp-5.5-44.el6_4.4.x86_64
net-snmp-utils-5.5-44.el6_4.4.x86_64

Comment 2 Jakub Jelinek 2013-11-25 20:56:08 UTC
Sure, hyphen is not valid identifier, the above is handled essentially as
#ifdef net
with extra tokens after it for which it warns.  Various sources contain extra tokens after e.g. #ifdef, or #else, #endif etc.
If you want the compiler to error on this, just use -pedantic-errors, then you'll get a hard error instead of warning.

Comment 4 Jan Safranek 2013-12-05 14:40:49 UTC
Well, it can still be fixed on net-snmp side simply by renaming net-snmp-* symbols to net_snmp_*.

Comment 11 errata-xmlrpc 2015-07-22 07:22:18 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://rhn.redhat.com/errata/RHSA-2015-1385.html


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