All of lore.kernel.org
 help / color / mirror / Atom feed
From: Guido Trentalancia <guido@trentalancia.com>
To: Stephen Smalley <sds@tycho.nsa.gov>
Cc: Eric Paris <eparis@redhat.com>,
	Eric Paris <eparis@parisplace.org>,
	SELinux Mail List <selinux@tycho.nsa.gov>
Subject: Re: [PATCH] Fix includes for userspace tools and libraries (and possible security issue)
Date: Tue, 13 Sep 2011 20:33:04 +0200	[thread overview]
Message-ID: <1315938784.2218.14.camel@vortex> (raw)
In-Reply-To: <1315934421.12522.46.camel@moss-pluto>

Hello Stephen.

On Tue, 2011-09-13 at 13:20 -0400, Stephen Smalley wrote:
> On Tue, 2011-09-13 at 18:31 +0200, Guido Trentalancia wrote:
> > But let me just try again pointing out a few further details so that
> > everybody would better understand the issue.
> > 
> > It is a maintenance issue with the Makefiles.
> > 
> > The DESTDIR variable does not matter much because the problem is that it
> > breaks not only the installation but also the compilation itself (prior
> > to the installation) !
> > 
> > So, DESTDIR is generally only used during the installation process (what
> > DESTINATION directory shall I write to ?).
> 
> That may be true, but we have been using it to perform local builds of
> the entire source repository for a very long time.  In the case of
> package builds, it doesn't matter because there each component is
> separately compiled and the package dependencies ensure that the
> required components are built and installed first.

The above depends on the distribution's build process. We do not know
for certain how each present and future distribution is going to build
the packages...

>   At some distant
> point in the past, this approach of using make DESTDIR was introduced as
> a way to allow us to build the entire tree without requiring us to
> introduce -I and -L options relative to the current directory, as that
> was viewed as being more painful to maintain and wrong when built
> separately (as for packages).

DESTDIR should not be mandatory to use but it is very much desirable.
But I do not get the connection with the two compiler flags...

> > The compilation problem being discussed here is twofold: compilation
> > itself (from *.c source code to *.o object code) and linking (from *.o
> > object code to the tool or shared library executable).
> > 
> > So the first side of the problem (compilation stage) is due to the fact
> > that gcc is only allowed to include header files from the system-wide
> > header repository (e.g. -I/usr/include) while unfortunately it is not
> > allowed/configured to try picking up local header files first (as in
> > having -I$(CURDIR)/libselinux/include -I$(CURDIR)/libsepol/include -I
> > $(CURDIR)/libsemanage/include before any eventual system-wide
> > -I/usr/include).
> 
> Build with make DESTDIR=/some/path install, and it should already add
> -I/some/path/usr/include to your CFLAGS, which will then get picked up
> before the system headers (as per man gcc and confirmed by experiment).

No, it doesn't currently ! If you want to try reproducing it, then you
should do so on a system which hasn't got it already installed (or make
sure you get temporarily rid of
$(PREFIX)/include/{selinux,sepol,semanage} and
$(LIBDIR)/lib{selinux,sepol,semanage}.* first).

> > The second side of the problem (linking stage) is due to a somewhat
> > similar fact that gcc is only allowed to search dynamic (shared)
> > libraries in system-wide repositories (such as -L/usr/lib) while it is
> > not allowed/configured to search the local build directories first (as
> > in having -L$(CURDIR)/libselinux/src -L$(CURDIR)/libsepol/src -L
> > $(CURDIR)/libsemanage/src before any system-wide -L/usr/lib).
> 
> Likewise, make DESTDIR=/some/path install will adjust your LDFLAGS
> correctly.

See above.

And to that add that the actual LDFLAGS possibly introduces an unwanted
and potentially dangerous libsepol.a cache !

In fact, somewhere the LDFLAGS currently adds $(LIBDIR)/libsepol.a
instead of the local copy of static library libsepol.a. This should be
further investigated as it might need to be treated as a security flaw
(binaries available from different vendors might be affected if linked
against the existing old libsepol.a static library).

> > For reference: the CURDIR variable is expanded by the GNU make tools to
> > the current directory (it is a GNU make functionality). I propose
> > exploiting such variable in the top-level Makefile in order to determine
> > the top-level SELinux-userspace directory and subsequently pass it
> > recursively to lower-level Makefiles (so that it is used in turn as the
> > base for the *local* -I include and -L link compiler/linker flags).
> 
> Ok, maybe we didn't know about CURDIR back then or thought it would
> break separate package builds.  I don't recall.  I'm not fundamentally
> opposed to the changes so long as they don't introduce any regressions,
> but I wanted to be sure that people understand the history.
> 
> > That said, I must admit I do not know much about the history, although
> > it seems to me from the git logs that the problem has been there since
> > the very first git commit.
> 
> Yet it has worked for us for quite a long time, via make DESTDIR.  If it
> is broken, it is a recent change that broke it.

I am missing the point again especially because I wasn't able to track
it down in git logs.

Regards,

Guido


--
This message was distributed to subscribers of the selinux mailing list.
If you no longer wish to subscribe, send mail to majordomo@tycho.nsa.gov with
the words "unsubscribe selinux" without quotes as the message.

  reply	other threads:[~2011-09-13 18:33 UTC|newest]

Thread overview: 78+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-09-09 17:01 [PATCH] Fix include semanage/handle.h for semanage_set_root() as used by semodule Guido Trentalancia
2011-09-09 17:11 ` Guido Trentalancia
2011-09-09 17:17 ` Guido Trentalancia
2011-09-09 17:31   ` Eric Paris
2011-09-09 17:46     ` Guido Trentalancia
2011-09-09 17:59       ` [PATCH] Fix LIBDIR usage for load_policy (was Re: [PATCH] Fix include semanage/handle.h for semanage_set_root() as used by semodule) Guido Trentalancia
2011-09-09 21:19         ` [RFC] Userspace top-level Makefile (was Re: [PATCH] Fix LIBDIR usage for load_policy) Guido Trentalancia
2011-09-09 21:37           ` Joshua Brindle
2011-09-09 21:46             ` Guido Trentalancia
2011-09-09 22:35             ` Guido Trentalancia
2011-09-09 23:07               ` Eric Paris
2011-09-09 23:12                 ` Guido Trentalancia
2011-09-09 23:15                   ` Eric Paris
2011-09-09 23:25                     ` Guido Trentalancia
2011-09-09 23:45                       ` Guido Trentalancia
2011-09-09 23:56                         ` Guido Trentalancia
2011-09-10  1:04                           ` [RFC] Userspace git local build (was Re: [RFC] Userspace top-level Makefile) Guido Trentalancia
2011-09-10  2:39                             ` [RFC v2] Userspace git local build (was Re: [RFC] Userspace git local build) Guido Trentalancia
2011-09-11 23:22                     ` [RFC] Userspace top-level Makefile (was Re: [PATCH] Fix LIBDIR usage for load_policy) Joshua Brindle
2011-09-12  2:12                       ` Guido Trentalancia
2011-09-12 12:41                         ` Joshua Brindle
2011-09-12 20:17                           ` [RFC] Improve installation of userspace shared libraries (was Re: [RFC] Userspace top-level Makefile) Guido Trentalancia
2011-09-13 21:00                             ` Stephen Smalley
2011-09-13 21:12                               ` Guido Trentalancia
2011-09-13 21:35                                 ` Guido Trentalancia
2011-09-12 12:57     ` [PATCH] Fix include semanage/handle.h for semanage_set_root() as used by semodule Stephen Smalley
2011-09-12 20:29       ` [PATCH] Fix includes for userspace tools and libraries (was Re: [PATCH] Fix include semanage/handle.h for semanage_set_root() as used by semodule) Guido Trentalancia
2011-09-12 22:01         ` Eric Paris
2011-09-12 23:05           ` Guido Trentalancia
2011-09-13  0:53             ` Guido Trentalancia
2011-09-13  2:03               ` [PATCH v2] Fix includes for userspace tools and libraries (was Re: [PATCH] Fix includes for userspace tools and libraries) Guido Trentalancia
2011-09-13  2:41                 ` [PATCH v3] Fix includes for userspace tools and libraries (was Re: [PATCH v2] " Guido Trentalancia
2011-09-13 12:41           ` [PATCH] Fix includes for userspace tools and libraries (was Re: [PATCH] Fix include semanage/handle.h for semanage_set_root() as used by semodule) Stephen Smalley
2011-09-13 16:31             ` Guido Trentalancia
2011-09-13 17:20               ` Stephen Smalley
2011-09-13 18:33                 ` Guido Trentalancia [this message]
2011-09-13 18:46                   ` [PATCH] Fix includes for userspace tools and libraries (and possible security issue) Guido Trentalancia
2011-09-13 19:17                     ` Stephen Smalley
2011-09-13 18:48                   ` Stephen Smalley
2011-09-13 19:18                     ` Guido Trentalancia
2011-09-13 19:25                       ` Stephen Smalley
2011-09-13 19:34                         ` Stephen Smalley
2011-09-13 20:04                           ` Guido Trentalancia
2011-09-13 20:20                             ` Stephen Smalley
2011-09-13 20:49                               ` Guido Trentalancia
2011-09-13 20:26                             ` Eric Paris
2011-09-13 20:42                               ` Stephen Smalley
2011-09-13 21:09                                 ` Guido Trentalancia
2011-09-13 22:05                               ` [PATCH v4] " Guido Trentalancia
2011-09-13 23:33                                 ` [PATCH] Fix function arguments in libsemanage tests (was Re: [PATCH v4] Fix includes for userspace tools and libraries) Guido Trentalancia
2011-09-14  0:44                                   ` [PATCH] Change default make target for sepolgen " Guido Trentalancia
2011-09-14  1:10                                     ` [PATCH] Change default make target for some directories in the libraries (was Re: [PATCH] Change default make target for sepolgen) Guido Trentalancia
2011-09-14  1:20                                       ` [PATCH] Change default make target for the man directory of policycoreutils/mcstrans " Guido Trentalancia
2011-09-14 19:16                                     ` [PATCH] Change default make target for sepolgen (was Re: [PATCH v4] Fix includes for userspace tools and libraries) Eric Paris
2011-09-14 19:31                                   ` [PATCH] Fix function arguments in libsemanage tests " Eric Paris
2011-09-15  4:40                                     ` [PATCH v5] Fix makefiles for the userspace tools and libraries Guido Trentalancia
2011-09-15  9:40                                       ` [PATCH] Fix symbolic link creation for the userspace libraries Guido Trentalancia
2011-09-15 11:51                                       ` [PATCH v5] Fix makefiles for the userspace tools and libraries Guido Trentalancia
2011-09-14 12:56                                 ` [PATCH v4] Fix includes for userspace tools and libraries (and possible security issue) Stephen Smalley
2011-09-15  2:44                                   ` [PATCH v5] " Guido Trentalancia
2011-09-15 12:56                                     ` Stephen Smalley
2011-09-15 16:04                                       ` Guido Trentalancia
2011-09-15 16:35                                         ` Stephen Smalley
2011-09-15 17:03                                           ` Guido Trentalancia
2011-09-15 17:16                                             ` Stephen Smalley
2011-09-15 17:26                                               ` Guido Trentalancia
2011-09-15 18:14                                                 ` Stephen Smalley
2011-09-15 19:12                                                   ` [PATCH v5] Fix includes for userspace tools and libraries Guido Trentalancia
2011-09-15 20:00                                                     ` Stephen Smalley
2011-09-15 20:32                                                       ` Guido Trentalancia
2011-09-16 12:39                                                         ` Stephen Smalley
2011-09-16 12:50                                                           ` Guido Trentalancia
2011-09-17 20:48                                                       ` [PATCH v6] " Guido Trentalancia
2011-09-15 19:37                                                   ` [PATCH v5] " Guido Trentalancia
2011-09-15 17:15                                         ` [PATCH v5] Fix includes for userspace tools and libraries (and possible security issue) Eric Paris
2011-09-13 19:42                         ` [PATCH] " Guido Trentalancia
2011-09-13 17:08           ` [PATCH] Fix includes for userspace tools and libraries (was Re: [PATCH] Fix include semanage/handle.h for semanage_set_root() as used by semodule) Stephen Smalley
2011-09-09 17:31   ` [PATCH] Fix include semanage/handle.h for semanage_set_root() as used by semodule Guido Trentalancia

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1315938784.2218.14.camel@vortex \
    --to=guido@trentalancia.com \
    --cc=eparis@parisplace.org \
    --cc=eparis@redhat.com \
    --cc=sds@tycho.nsa.gov \
    --cc=selinux@tycho.nsa.gov \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.