Note: This bug is displayed in read-only format because the product is no longer active in Red Hat Bugzilla.
RHEL Engineering is moving the tracking of its product development work on RHEL 6 through RHEL 9 to Red Hat Jira (issues.redhat.com). If you're a Red Hat customer, please continue to file support cases via the Red Hat customer portal. If you're not, please head to the "RHEL project" in Red Hat Jira and file new tickets here. Individual Bugzilla bugs in the statuses "NEW", "ASSIGNED", and "POST" are being migrated throughout September 2023. Bugs of Red Hat partners with an assigned Engineering Partner Manager (EPM) are migrated in late September as per pre-agreed dates. Bugs against components "kernel", "kernel-rt", and "kpatch" are only migrated if still in "NEW" or "ASSIGNED". If you cannot log in to RH Jira, please consult article #7032570. That failing, please send an e-mail to the RH Jira admins at rh-issues@redhat.com to troubleshoot your issue as a user management inquiry. The email creates a ServiceNow ticket with Red Hat. Individual Bugzilla bugs that are migrated will be moved to status "CLOSED", resolution "MIGRATED", and set with "MigratedToJIRA" in "Keywords". The link to the successor Jira issue will be found under "Links", have a little "two-footprint" icon next to it, and direct you to the "RHEL project" in Red Hat Jira (issue links are of type "https://issues.redhat.com/browse/RHEL-XXXX", where "X" is a digit). This same link will be available in a blue banner at the top of the page informing you that that bug has been migrated.

Bug 1034441

Summary: Net-SNMP libraries and headers are invalid due to hyphens.
Product: Red Hat Enterprise Linux 6 Reporter: Bryan Totty <btotty>
Component: net-snmpAssignee: Jan Safranek <jsafrane>
Status: CLOSED ERRATA QA Contact: BaseOS QE Security Team <qe-baseos-security>
Severity: medium Docs Contact:
Priority: medium    
Version: 6.4CC: dapospis, ebenes, jakub, mpolacek
Target Milestone: rcKeywords: Reopened
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
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.
Story Points: ---
Clone Of:
: 1038642 (view as bug list) Environment:
Last Closed: 2015-07-22 07:22:18 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:    
Bug Blocks: 1038642, 1075802    

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