Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Tue, 9 Oct 2012 17:08:14 -0700
From: Isaac Dunham <idunham@...abit.com>
To: musl@...ts.openwall.com
Subject: Re: Clash between 'netinet/if_ether.h' and
 'linux/if_ether.h'

On Tue, 9 Oct 2012 19:15:53 -0400
Rich Felker <dalias@...ifal.cx> wrote:

> On Tue, Oct 09, 2012 at 04:13:43PM -0700, Isaac Dunham wrote:
> > > It's a bug to be including linux/if_ether.h, and there's no way to
> > > work around this without depending on kernel headers, which musl will
> > 
> > Patch that does work around it:
> > 
> > -#ifndef _NETINET_IF_ETHER_H
> > +/* Check for <linux/if_ether.h> - _LINUX_IF_ETHER_H will also work */
> > +#if !defined(_NETINET_IF_ETHER_H) || !defined(ETH_ALEN)
> > #define _NETINET_IF_ETHER_H
> > +#define _LINUX_IF_ETHER_H /* linux/if_ether.h defines the same stuff */
> 
> That is a clever workaround, but the way it's written it breaks
> include-guard heuristics. Instead, it should be..
> 
> #ifndef _NETINET_IF_ETHER_H
> #define _NETINET_IF_ETHER_H
> 
> #ifndef ETH_ALEN
> ...
> #endif
> 
> #endif
> 
> But does it work the other way around, i.e. if <netinet/if_ether.h> is
> included first?
That's what the second change is for:
> > +#define _LINUX_IF_ETHER_H /* linux/if_ether.h defines the same stuff */

> I'd still rather just press upstream to fix this stupid bug if we can.
> This is the kind of thing that only affects a small number of broken
> applications, and as such, I really question whether it merits ugly
> workarounds.

Agreed. I mainly mentioned that because I take "*can't* do <xyz> without <abc>" as a challenge.

-- 
Isaac Dunham <idunham@...abit.com>

Powered by blists - more mailing lists

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.