backend hba.c prob

Started by Patrick Welcheover 24 years ago9 messages
#1Patrick Welche
prlw1@newn.cam.ac.uk

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?

Cheers,

Patrick

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Patrick Welche (#1)
Re: backend hba.c prob

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

#3Bruce Momjian
pgman@candle.pha.pa.us
In reply to: Patrick Welche (#1)
Re: backend hba.c prob

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, Pennsylvania 19026
#4bpalmer
bpalmer@crimelabs.net
In reply to: Bruce Momjian (#3)
Re: backend hba.c prob

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

#5Patrick Welche
prlw1@newn.cam.ac.uk
In reply to: Tom Lane (#2)
Re: backend hba.c prob

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

#6Bruce Momjian
pgman@candle.pha.pa.us
In reply to: Patrick Welche (#5)
Re: backend hba.c prob

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
#7Bruce Momjian
pgman@candle.pha.pa.us
In reply to: bpalmer (#4)
Re: backend hba.c prob

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, Pennsylvania 19026
#8Patrick Welche
prlw1@newn.cam.ac.uk
In reply to: Bruce Momjian (#6)
Re: backend hba.c prob

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

#9Bruce Momjian
pgman@candle.pha.pa.us
In reply to: Patrick Welche (#8)
Re: backend hba.c prob

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