Thread: backend hba.c prob

backend hba.c prob

From
Patrick Welche
Date:
gcc -O2 -pipe -g -Wall -Wmissing-prototypes -Wmissing-declarations -I../../../src/include   -c -o hba.o hba.c
hba.c: In function `ident_unix':
hba.c:923: sizeof applied to an incomplete type
hba.c:960: dereferencing pointer to incomplete type
hba.c:965: dereferencing pointer to incomplete type
gmake: *** [hba.o] Error 1


Now, the problem is sizeof(Cred), typedef struct cmsgcred Cred, and I don't
have a cmsgcred anywhere! The closest is my sys/ucred.h which defines a
struct ucred {       u_short cr_ref;                 /* reference count */       uid_t   cr_uid;                 /*
effectiveuser id */       gid_t   cr_gid;                 /* effective group id */       short   cr_ngroups;
/* number of groups */       gid_t   cr_groups[NGROUPS];     /* groups */
 
};

Thoughts?

Cheers,

Patrick


Re: backend hba.c prob

From
Tom Lane
Date:
Patrick Welche <prlw1@newn.cam.ac.uk> writes:
> hba.c: In function `ident_unix':
> hba.c:923: sizeof applied to an incomplete type

> Now, the problem is sizeof(Cred), typedef struct cmsgcred Cred, and I don't
> have a cmsgcred anywhere!

That's new code and we expected some portability issues with it :-(

What platform are you on exactly?  What changes are needed to make the
code work there, and how might we #ifdef or autoconfigure a test for it?
        regards, tom lane


Re: backend hba.c prob

From
Bruce Momjian
Date:
> gcc -O2 -pipe -g -Wall -Wmissing-prototypes -Wmissing-declarations -I../../../src/include   -c -o hba.o hba.c
> hba.c: In function `ident_unix':
> hba.c:923: sizeof applied to an incomplete type
> hba.c:960: dereferencing pointer to incomplete type
> hba.c:965: dereferencing pointer to incomplete type
> gmake: *** [hba.o] Error 1
> 
> 
> Now, the problem is sizeof(Cred), typedef struct cmsgcred Cred, and I don't
> have a cmsgcred anywhere! The closest is my sys/ucred.h which defines a
> struct ucred {
>         u_short cr_ref;                 /* reference count */
>         uid_t   cr_uid;                 /* effective user id */
>         gid_t   cr_gid;                 /* effective group id */
>         short   cr_ngroups;             /* number of groups */
>         gid_t   cr_groups[NGROUPS];     /* groups */
> };
> 
> Thoughts?

Actually, yes.

The code currently runs on FreeBSD and BSD/OS.  Right now, it tests for
BSD/OS and if it fails, assume it is FreeBSD.  That is what the #ifndef
fc_uid is for.  Now, I assume you are on a *BSD which is not one of
those.  Do you have a struct fcred?  I will browse your OS headers as
soon as I know your OS.

--  Bruce Momjian                        |  http://candle.pha.pa.us pgman@candle.pha.pa.us               |  (610)
853-3000+  If your life is a hard drive,     |  830 Blythe Avenue +  Christ can be your backup.        |  Drexel Hill,
Pennsylvania19026
 


Re: backend hba.c prob

From
bpalmer
Date:
On Fri, 7 Sep 2001, Bruce Momjian wrote:

> > gcc -O2 -pipe -g -Wall -Wmissing-prototypes -Wmissing-declarations -I../../../src/include   -c -o hba.o hba.c
> > hba.c: In function `ident_unix':
> > hba.c:923: sizeof applied to an incomplete type
> > hba.c:960: dereferencing pointer to incomplete type
> > hba.c:965: dereferencing pointer to incomplete type
> > gmake: *** [hba.o] Error 1

> The code currently runs on FreeBSD and BSD/OS.  Right now, it tests for
> BSD/OS and if it fails, assume it is FreeBSD.  That is what the #ifndef
> fc_uid is for.  Now, I assume you are on a *BSD which is not one of
> those.  Do you have a struct fcred?  I will browse your OS headers as
> soon as I know your OS.

Yeah,  i'm seeing the same problem on OpenBSD-current (and 2.9).  No Cred
anywhere!

This:
root@mizer:/usr/src$ egrep -r "fcred" *

turned up nothing interesting either.

Thoughts?

- Brandon


----------------------------------------------------------------------------b. palmer,  bpalmer@crimelabs.net
pgp:crimelabs.net/bpalmer.pgp5
 



Re: backend hba.c prob

From
Patrick Welche
Date:
On Fri, Sep 07, 2001 at 10:14:27AM -0400, Tom Lane wrote:
> Patrick Welche <prlw1@newn.cam.ac.uk> writes:
> > hba.c: In function `ident_unix':
> > hba.c:923: sizeof applied to an incomplete type
> 
> > Now, the problem is sizeof(Cred), typedef struct cmsgcred Cred, and I don't
> > have a cmsgcred anywhere!
> 
> That's new code and we expected some portability issues with it :-(
> 
> What platform are you on exactly?

NetBSD-1.5X/i386 Remeber me? :)

> What changes are needed to make the
> code work there, and how might we #ifdef or autoconfigure a test for it?

I need to look at it some more for that..

Cheers,

Patrick


Re: backend hba.c prob

From
Bruce Momjian
Date:
> On Fri, Sep 07, 2001 at 10:14:27AM -0400, Tom Lane wrote:
> > Patrick Welche <prlw1@newn.cam.ac.uk> writes:
> > > hba.c: In function `ident_unix':
> > > hba.c:923: sizeof applied to an incomplete type
> >
> > > Now, the problem is sizeof(Cred), typedef struct cmsgcred Cred, and I don't
> > > have a cmsgcred anywhere!
> >
> > That's new code and we expected some portability issues with it :-(
> >
> > What platform are you on exactly?
>
> NetBSD-1.5X/i386 Remeber me? :)
>
> > What changes are needed to make the
> > code work there, and how might we #ifdef or autoconfigure a test for it?
>
> I need to look at it some more for that..

OK, I have modified the CVS CREDS code to work on FreeBSD and BSD/OS,
and hopefully NetBSD.  I talked to Jason at Linuxworld and I think this
code should work.  Please test the CVS version and let me know.  OpenBSD
doesn't support creds as far as I can tell.

To test, define 'ident sameuser' for 'local' in pg_hba.conf and restart
postmaster.  Then connect as local user.

--
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 853-3000
  +  If your life is a hard drive,     |  830 Blythe Avenue
  +  Christ can be your backup.        |  Drexel Hill, Pennsylvania 19026

Re: backend hba.c prob

From
Bruce Momjian
Date:
> On Fri, 7 Sep 2001, Bruce Momjian wrote:
> 
> > > gcc -O2 -pipe -g -Wall -Wmissing-prototypes -Wmissing-declarations -I../../../src/include   -c -o hba.o hba.c
> > > hba.c: In function `ident_unix':
> > > hba.c:923: sizeof applied to an incomplete type
> > > hba.c:960: dereferencing pointer to incomplete type
> > > hba.c:965: dereferencing pointer to incomplete type
> > > gmake: *** [hba.o] Error 1
> 
> > The code currently runs on FreeBSD and BSD/OS.  Right now, it tests for
> > BSD/OS and if it fails, assume it is FreeBSD.  That is what the #ifndef
> > fc_uid is for.  Now, I assume you are on a *BSD which is not one of
> > those.  Do you have a struct fcred?  I will browse your OS headers as
> > soon as I know your OS.
> 
> Yeah,  i'm seeing the same problem on OpenBSD-current (and 2.9).  No Cred
> anywhere!
> 
> This:
> 
>     root@mizer:/usr/src$ egrep -r "fcred" *
> 
> turned up nothing interesting either.

OK, CVS should compile on OpenBSD now. However, there is no SCM_CREDS
capability on OpenBSD that I can see so 'ident' will not work on 'local'
in pg_hba.conf.

--  Bruce Momjian                        |  http://candle.pha.pa.us pgman@candle.pha.pa.us               |  (610)
853-3000+  If your life is a hard drive,     |  830 Blythe Avenue +  Christ can be your backup.        |  Drexel Hill,
Pennsylvania19026
 


Re: backend hba.c prob

From
Patrick Welche
Date:
On Fri, Sep 07, 2001 at 04:05:58PM -0400, Bruce Momjian wrote:
...
> OK, I have modified the CVS CREDS code to work on FreeBSD and BSD/OS,
> and hopefully NetBSD.  I talked to Jason at Linuxworld and I think this
> code should work.  Please test the CVS version and let me know.  OpenBSD
> doesn't support creds as far as I can tell.
>
> To test, define 'ident sameuser' for 'local' in pg_hba.conf and restart
> postmaster.  Then connect as local user.

All tested OK under NetBSD :)

Cheers,

Patrick

Re: backend hba.c prob

From
Bruce Momjian
Date:
> On Fri, Sep 07, 2001 at 04:05:58PM -0400, Bruce Momjian wrote:
> ...
> > OK, I have modified the CVS CREDS code to work on FreeBSD and BSD/OS,
> > and hopefully NetBSD.  I talked to Jason at Linuxworld and I think this
> > code should work.  Please test the CVS version and let me know.  OpenBSD
> > doesn't support creds as far as I can tell.
> >
> > To test, define 'ident sameuser' for 'local' in pg_hba.conf and restart
> > postmaster.  Then connect as local user.
>
> All tested OK under NetBSD :)

Really?  Looks like I hit it right the first time.  The NetBSD method is
very similar to the BSD/OS version.

--
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 853-3000
  +  If your life is a hard drive,     |  830 Blythe Avenue
  +  Christ can be your backup.        |  Drexel Hill, Pennsylvania 19026