Обсуждение: 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; /*
effectiveuser id */ gid_t cr_gid; /* effective group id */ short cr_ngroups;
/* number of groups */ gid_t cr_groups[NGROUPS]; /* groups */
};
Thoughts?
Cheers,
Patrick
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
> 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
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
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
> 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
> 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
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
> 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