Re: 'struct dynamic': struct tag leak in UAPI headers

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Aug 29, 2023 at 03:27:16PM +0200, Alejandro Colomar wrote:
> > It was introduced before git, so trawling through linux-fullhistory ....
> 
> 
> diff --git a/include/linux/elf.h b/include/linux/elf.h
> -typedef struct dynamic{
> --
> diff --git a/include/uapi/linux/elf.h b/include/uapi/linux/elf.h
> +typedef struct dynamic{
> 
> 
> Hmm, I thought that commit was the one that moved it from an internal header
> to a UAPI one.  I didn't know include/linux/elf.h was a public header long ago.

Ooh, story time!  Long, long ago, we did not separate "Linux headers"
from "libc headers".  It used to be somebody's job to take the files
in /usr/src/linux/include/linux and copy them to /usr/include/linux.
Bold people used a symlink.  People who cared about things like "Well,
POSIX says that" would edit the files after copying them to remove things
that POSIX said shouldn't be there or put _GNU_SOURCE markers around them.

At some point, we decided to split the headers to create the uapi headers
to make this job easier.  Refinements are, of course, possible, and now
easier than ever, but I think it's fair to say that anybody who included
<linux/elf.h> at any time in history got given a struct dynamic.

> Might be true.  But since it's a compile-time failure, it's not going to
> cause silent bugs.  If there was a real regression, it would be trivial to
> detect and fix, so maybe it's a risk that can be taken.  But yeah, your
> concern may vary.  :)

Well, it's a compile-time failure either way.  Code that depended on it
is compiling happily today, and the code that would want to use it
doesn't exist yet, so I'd rather err on the side of keeping code written
in the last 30 years working.







[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux