Thread: Error compiling sepgsql in PG9.1

Error compiling sepgsql in PG9.1

From
Emanuel Calvo
Date:
I had the following error during compile of sepgsqk contrib:

root@postgresql:~/postgresql-9.1beta1/contrib/sepgsql# make
sed 's,MODULE_PATHNAME,$libdir/sepgsql,g' sepgsql.sql.in >sepgsql.sql
gcc -O2 -Wall -Wmissing-prototypes -Wpointer-arith
-Wdeclaration-after-statement -Wendif-labels -Wformat-security
-fno-strict-aliasing -fwrapv -fpic -I. -I. -I../../src/include
-D_GNU_SOURCE -I/usr/include/libxml2   -c -o hooks.o hooks.c
gcc -O2 -Wall -Wmissing-prototypes -Wpointer-arith
-Wdeclaration-after-statement -Wendif-labels -Wformat-security
-fno-strict-aliasing -fwrapv -fpic -I. -I. -I../../src/include
-D_GNU_SOURCE -I/usr/include/libxml2   -c -o selinux.o selinux.c
selinux.c: In function 'sepgsql_compute_avd':
selinux.c:735: warning: implicit declaration of function 'security_deny_unknown'
selinux.c:755: error: 'struct av_decision' has no member named 'flags'
selinux.c:764: warning: implicit declaration of function
'security_compute_av_flags_raw'
selinux.c: In function 'sepgsql_check_perms':
selinux.c:917: error: 'struct av_decision' has no member named 'flags'
selinux.c:917: error: 'SELINUX_AVD_FLAGS_PERMISSIVE' undeclared (first
use in this function)
selinux.c:917: error: (Each undeclared identifier is reported only once
selinux.c:917: error: for each function it appears in.)
make: *** [selinux.o] Error 1

The selinux version is:

root@postgresql:~/postgresql-9.1beta1/contrib/sepgsql# dpkg -l | grep seli
ii  libselinux1                            2.0.55-0ubuntu4
         SELinux policy enforcement, run-time librari
ii  libselinux1-dev                        2.0.55-0ubuntu4
         SELinux policy enforcement, development file




--
--
              Emanuel Calvo
              Helpame.com

Re: Error compiling sepgsql in PG9.1

From
Devrim GÜNDÜZ
Date:
On Fri, 2011-05-20 at 11:02 +0200, Emanuel Calvo wrote:
> I had the following error during compile of sepgsqk contrib:

Apparently we need to specify the minimum SELinux version that we can
compile sepgsql against. It builds fine on my Fedora 14 box, where I
have libselinux 2.0.96.

Regards,
--
Devrim GÜNDÜZ
Principal Systems Engineer @ EnterpriseDB: http://www.enterprisedb.com
PostgreSQL Danışmanı/Consultant, Red Hat Certified Engineer
Community: devrim~PostgreSQL.org, devrim.gunduz~linux.org.tr
http://www.gunduz.org  Twitter: http://twitter.com/devrimgunduz

Attachment

Re: Error compiling sepgsql in PG9.1

From
Kohei Kaigai
Date:
As documentation said, it needs libselinux 2.0.93 or higher.
This version supports selabel_lookup(3) for database object classes.

Thanks,
--
NEC Europe Ltd, SAP Global Competence Center
KaiGai Kohei <kohei.kaigai@emea.nec.com>

> -----Original Message-----
> From: Devrim GÜNDÜZ [mailto:devrim@gunduz.org]
> Sent: 20. Mai 2011 19:05
> To: Emanuel Calvo
> Cc: postgresql Forums; KaiGai Kohei
> Subject: Re: [GENERAL] Error compiling sepgsql in PG9.1
> 
> On Fri, 2011-05-20 at 11:02 +0200, Emanuel Calvo wrote:
> > I had the following error during compile of sepgsqk contrib:
> 
> Apparently we need to specify the minimum SELinux version that we can compile sepgsql against. It builds
> fine on my Fedora 14 box, where I have libselinux 2.0.96.
> 
> Regards,
> --
> Devrim GÜNDÜZ
> Principal Systems Engineer @ EnterpriseDB: http://www.enterprisedb.com PostgreSQL
> Danışmanı/Consultant, Red Hat Certified Engineer
> Community: devrim~PostgreSQL.org, devrim.gunduz~linux.org.tr http://www.gunduz.org  Twitter:
> http://twitter.com/devrimgunduz

Re: Error compiling sepgsql in PG9.1

From
Devrim GÜNDÜZ
Date:
On Sat, 2011-05-21 at 02:50 +0100, Kohei Kaigai wrote:
> As documentation said, it needs libselinux 2.0.93 or higher.
> This version supports selabel_lookup(3) for database object classes.

AFAICS, we are not checking it during configure. It might be worth to
add libselinux version check in the configure phase.
--
Devrim GÜNDÜZ
Principal Systems Engineer @ EnterpriseDB: http://www.enterprisedb.com
PostgreSQL Danışmanı/Consultant, Red Hat Certified Engineer
Community: devrim~PostgreSQL.org, devrim.gunduz~linux.org.tr
http://www.gunduz.org  Twitter: http://twitter.com/devrimgunduz

Attachment

Re: Error compiling sepgsql in PG9.1

From
Emanuel Calvo
Date:
2011/5/21 Devrim GÜNDÜZ <devrim@gunduz.org>:
> On Sat, 2011-05-21 at 02:50 +0100, Kohei Kaigai wrote:
>> As documentation said, it needs libselinux 2.0.93 or higher.
>> This version supports selabel_lookup(3) for database object classes.
>
> AFAICS, we are not checking it during configure. It might be worth to
> add libselinux version check in the configure phase.
> --

So it could be added into the configure the check and I think
a patch in the doc could complete this issue. That's rigth?



--
--
              Emanuel Calvo
              Helpame.com

Re: Error compiling sepgsql in PG9.1

From
Kohei Kaigai
Date:
> 2011/5/21 Devrim GÜNDÜZ <devrim@gunduz.org>:
> > On Sat, 2011-05-21 at 02:50 +0100, Kohei Kaigai wrote:
> >> As documentation said, it needs libselinux 2.0.93 or higher.
> >> This version supports selabel_lookup(3) for database object classes.
> >
> > AFAICS, we are not checking it during configure. It might be worth to
> > add libselinux version check in the configure phase.
> > --
> 
> So it could be added into the configure the check and I think
> a patch in the doc could complete this issue. That's rigth?
>
Correct.

Now, configure script checks existence of libselinux using AC_CHECK_LIB(),
but getpeercon(3) has been supported for a long time, thus, an older version
of libselinux can also pass this test.

What I want to check here is an existence of SELABEL_CTX_DB definition in
selinux/label.h header file; supported on 2.0.93 or later.

Do you have any good idea to check existence of a particular definition in
a particular header file.

-- in selinux/label.h
  /*
   * Available backends.
   */
  
  /* file contexts */
  #define SELABEL_CTX_FILE        0
  /* media contexts */
  #define SELABEL_CTX_MEDIA       1
  /* x contexts */
  #define SELABEL_CTX_X           2
  /* db objects */
  #define SELABEL_CTX_DB          3  <-- not exist libselinux older than 2.0.93

Thanks,
--
NEC Europe Ltd, SAP Global Competence Center
KaiGai Kohei <kohei.kaigai@emea.nec.com>


> -----Original Message-----
> From: Emanuel Calvo [mailto:postgres.arg@gmail.com]
> Sent: 24. Mai 2011 12:30
> To: Devrim GÜNDÜZ
> Cc: Kohei Kaigai; postgresql Forums; KaiGai Kohei
> Subject: Re: [GENERAL] Error compiling sepgsql in PG9.1
> 
> 2011/5/21 Devrim GÜNDÜZ <devrim@gunduz.org>:
> > On Sat, 2011-05-21 at 02:50 +0100, Kohei Kaigai wrote:
> >> As documentation said, it needs libselinux 2.0.93 or higher.
> >> This version supports selabel_lookup(3) for database object classes.
> >
> > AFAICS, we are not checking it during configure. It might be worth to
> > add libselinux version check in the configure phase.
> > --
> 
> So it could be added into the configure the check and I think
> a patch in the doc could complete this issue. That's rigth?
> 
> 
> 
> --
> --
>               Emanuel Calvo
>               Helpame.com

Re: Error compiling sepgsql in PG9.1

From
Kohei Kaigai
Date:
I noticed that selinux_sepgsql_context_path(3) was also got merged at libselinux-2.0.83.
So, we could check correctness of library versions using existence of this function.

Does this patch expectedly abort the configure script on older libselinux installation?
I'm not available to setup Ubuntu environment immediately.

Thanks,
--
NEC Europe Ltd, SAP Global Competence Center
KaiGai Kohei <kohei.kaigai@emea.nec.com>


> -----Original Message-----
> From: Kohei Kaigai [mailto:Kohei.Kaigai@EMEA.NEC.COM]
> Sent: 24. Mai 2011 12:44
> To: Emanuel Calvo; Devrim GÜNDÜZ
> Cc: postgresql Forums; KaiGai Kohei
> Subject: RE: [GENERAL] Error compiling sepgsql in PG9.1
> 
> > 2011/5/21 Devrim GÜNDÜZ <devrim@gunduz.org>:
> > > On Sat, 2011-05-21 at 02:50 +0100, Kohei Kaigai wrote:
> > >> As documentation said, it needs libselinux 2.0.93 or higher.
> > >> This version supports selabel_lookup(3) for database object classes.
> > >
> > > AFAICS, we are not checking it during configure. It might be worth to
> > > add libselinux version check in the configure phase.
> > > --
> >
> > So it could be added into the configure the check and I think
> > a patch in the doc could complete this issue. That's rigth?
> >
> Correct.
> 
> Now, configure script checks existence of libselinux using AC_CHECK_LIB(),
> but getpeercon(3) has been supported for a long time, thus, an older version
> of libselinux can also pass this test.
> 
> What I want to check here is an existence of SELABEL_CTX_DB definition in
> selinux/label.h header file; supported on 2.0.93 or later.
> 
> Do you have any good idea to check existence of a particular definition in
> a particular header file.
> 
> -- in selinux/label.h
>   /*
>    * Available backends.
>    */
> 
>   /* file contexts */
>   #define SELABEL_CTX_FILE        0
>   /* media contexts */
>   #define SELABEL_CTX_MEDIA       1
>   /* x contexts */
>   #define SELABEL_CTX_X           2
>   /* db objects */
>   #define SELABEL_CTX_DB          3  <-- not exist libselinux older than 2.0.93
> 
> Thanks,
> --
> NEC Europe Ltd, SAP Global Competence Center
> KaiGai Kohei <kohei.kaigai@emea.nec.com>
> 
> 
> > -----Original Message-----
> > From: Emanuel Calvo [mailto:postgres.arg@gmail.com]
> > Sent: 24. Mai 2011 12:30
> > To: Devrim GÜNDÜZ
> > Cc: Kohei Kaigai; postgresql Forums; KaiGai Kohei
> > Subject: Re: [GENERAL] Error compiling sepgsql in PG9.1
> >
> > 2011/5/21 Devrim GÜNDÜZ <devrim@gunduz.org>:
> > > On Sat, 2011-05-21 at 02:50 +0100, Kohei Kaigai wrote:
> > >> As documentation said, it needs libselinux 2.0.93 or higher.
> > >> This version supports selabel_lookup(3) for database object classes.
> > >
> > > AFAICS, we are not checking it during configure. It might be worth to
> > > add libselinux version check in the configure phase.
> > > --
> >
> > So it could be added into the configure the check and I think
> > a patch in the doc could complete this issue. That's rigth?
> >
> >
> >
> > --
> > --
> >               Emanuel Calvo
> >               Helpame.com

Attachment

Re: Error compiling sepgsql in PG9.1

From
Emanuel Calvo
Date:
2011/5/24 Kohei Kaigai <Kohei.Kaigai@emea.nec.com>:
> I noticed that selinux_sepgsql_context_path(3) was also got merged at libselinux-2.0.83.
> So, we could check correctness of library versions using existence of this function.
>
> Does this patch expectedly abort the configure script on older libselinux installation?
> I'm not available to setup Ubuntu environment immediately.
>

I tried to apply your patch, and reject some lines:

ecalvo-laptop@dell-desktop:~/postgresql-9.1beta1$ cat configure.rej
--- configure.in
+++ configure.in
@@ -960,7 +960,7 @@

 # for contrib/sepgsql
 if test "$with_selinux" = yes; then
-  AC_CHECK_LIB(selinux, getpeercon_raw, [],
+  AC_CHECK_LIB(selinux, selinux_sepgsql_context_path, [],
                [AC_MSG_ERROR([library 'libselinux' is required for
SELinux support])])
 fi

I'm not with CVS version, I'm using beta download. I need to update my CVS
version. at least I will apply these lines manually to test now.



--
--
              Emanuel Calvo
              Helpame.com

Re: Error compiling sepgsql in PG9.1

From
Kohei Kaigai
Date:
The attached patch enables to abort configure script when we run it with '--with-selinux'
option, but libselinux is older than minimum requirement to SE-PostgreSQL.

As the documentation said, it needs libselinux-2.0.93 at least, because this or later
version support selabel_lookup(3) for database object classes; used to initial labeling.

The current configure script checks existence of libselinux, but no version checks.
(getpeercon_raw(3) has been a supported API for a long term.)
The selinux_sepgsql_context_path(3) is a good watermark of libselinux-2.0.93 instead.

Thanks,
--
NEC Europe Ltd, SAP Global Competence Center
KaiGai Kohei <kohei.kaigai@emea.nec.com>


> -----Original Message-----
> From: Devrim GÜNDÜZ [mailto:devrim@gunduz.org]
> Sent: 21. Mai 2011 07:46
> To: Kohei Kaigai
> Cc: Emanuel Calvo; postgresql Forums; KaiGai Kohei
> Subject: Re: [GENERAL] Error compiling sepgsql in PG9.1
> 
> On Sat, 2011-05-21 at 02:50 +0100, Kohei Kaigai wrote:
> > As documentation said, it needs libselinux 2.0.93 or higher.
> > This version supports selabel_lookup(3) for database object classes.
> 
> AFAICS, we are not checking it during configure. It might be worth to add libselinux version check
> in the configure phase.
> --
> Devrim GÜNDÜZ
> Principal Systems Engineer @ EnterpriseDB: http://www.enterprisedb.com PostgreSQL
> Danışmanı/Consultant, Red Hat Certified Engineer
> Community: devrim~PostgreSQL.org, devrim.gunduz~linux.org.tr http://www.gunduz.org  Twitter:
> http://twitter.com/devrimgunduz

Attachment

Re: [HACKERS] Error compiling sepgsql in PG9.1

From
Robert Haas
Date:
2011/5/24 Kohei Kaigai <Kohei.Kaigai@emea.nec.com>:
> The attached patch enables to abort configure script when we run it with '--with-selinux'
> option, but libselinux is older than minimum requirement to SE-PostgreSQL.
>
> As the documentation said, it needs libselinux-2.0.93 at least, because this or later
> version support selabel_lookup(3) for database object classes; used to initial labeling.
>
> The current configure script checks existence of libselinux, but no version checks.
> (getpeercon_raw(3) has been a supported API for a long term.)
> The selinux_sepgsql_context_path(3) is a good watermark of libselinux-2.0.93 instead.

Looks to me like you need to adjust the wording of the error message.

Maybe "libselinux version 2.0.93 or newer is required", or something like that.

--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company