Bug 467485

Summary: Applications using ucred which compiled in F8 fail in F9.
Product: [Fedora] Fedora Reporter: Michael H. Warfield <mhw>
Component: glibcAssignee: Jakub Jelinek <jakub>
Status: CLOSED NOTABUG QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: medium Docs Contact:
Priority: medium    
Version: 9CC: jakub
Target Milestone: ---   
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2008-10-18 18:38:00 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Michael H. Warfield 2008-10-17 17:54:28 UTC
This is a problem in glibc-headers but I don't see a category for that and this is as close as I can get.

I have a network application that compiles and runs in Fedora 8 but which fails in Fedora 9 complaining that it is unable to determine the size of a structure of type "ucred".  That structure is defined in /usr/include/bits/socket.h.  The telling difference is that in F9 it's under and #ifdef as follows:

F8:

/* User visible structure for SCM_CREDENTIALS message */

struct ucred
{
  pid_t pid;                    /* PID of sending process.  */
  uid_t uid;                    /* UID of sending process.  */
  gid_t gid;                    /* GID of sending process.  */
};


F9:

#ifdef __USE_GNU
/* User visible structure for SCM_CREDENTIALS message */
struct ucred
{
  pid_t pid;                    /* PID of sending process.  */
  uid_t uid;                    /* UID of sending process.  */
  gid_t gid;                    /* GID of sending process.  */
};
#endif

What gives?  And defining __USE_GNU in the calling application did not
solve the problem.  One of the intervening includes must be undefining it.

I don't see the reason for this change since all it does is eliminate
the ucred structure definition without defining any replacement.  The
application clearly compiled and worked under F8 and it compiles and
works under F9 if I remove that #ifdef, so I don't understand what it's
there for or what it's accomplishing since it won't conflict with any
other definition.

F8:     glibc-headers-2.7-2
F9:     glibc-headers-2.8-8

Comment 1 Michael H. Warfield 2008-10-18 18:38:00 UTC
Problem resolved on mailing list. Not a bug.