Thread

  1. krb_server_keyfile setting doesn't work on Windows

    Inoue, Hiroshi <inoue@tpf.co.jp> — 2009-12-30T15:27:45Z

    Hi,
    
    As far as I tested, the krb_server_keyfile setting
    in postgres.conf doesn't work on Windows.
    
    Because gssapi32.dll(krb5_32.dll) seems to call
    getenv("KRB5_KTNAME") in msvcr71, postgres.exe
    should call putenv("KRB5_KTNAME=...") in msvcr71.
    The attached patch fixes the problem in my test
    case.
    
    regards,
    Hiroshi Inoue
    
  2. Re: krb_server_keyfile setting doesn't work on Windows

    Tom Lane <tgl@sss.pgh.pa.us> — 2009-12-30T16:10:56Z

    Hiroshi Inoue <inoue@tpf.co.jp> writes:
    > Because gssapi32.dll(krb5_32.dll) seems to call
    > getenv("KRB5_KTNAME") in msvcr71, postgres.exe
    > should call putenv("KRB5_KTNAME=...") in msvcr71.
    > The attached patch fixes the problem in my test
    > case.
    
    Don't we already have something like that in our src/port putenv
    substitute?
    
    			regards, tom lane
    
    
  3. Re: krb_server_keyfile setting doesn't work on Windows

    Magnus Hagander <magnus@hagander.net> — 2009-12-30T16:20:08Z

    2009/12/30 Hiroshi Inoue <inoue@tpf.co.jp>:
    > Hi,
    >
    > As far as I tested, the krb_server_keyfile setting
    > in postgres.conf doesn't work on Windows.
    >
    > Because gssapi32.dll(krb5_32.dll) seems to call
    > getenv("KRB5_KTNAME") in msvcr71, postgres.exe
    > should call putenv("KRB5_KTNAME=...") in msvcr71.
    > The attached patch fixes the problem in my test
    > case.
    
    Isn't the main backend linked with msvcr71.dll anyway? Then the
    regular putenv should put it in th eenv of  msvcr71.dll, and the stuff
    that's wrapped through src/port/win32env.c will put it in the regular
    msvcr file.
    
    I wonder if you're possibly being hit with the bug I patched the other
    day, but didn't backpatch.
    (http://git.postgresql.org/gitweb?p=postgresql.git;a=commitdiff;h=f8bcd7220b1166f7c037ceaf0a53958cbc6a7630).
    
    Can you see if that fix solves your problem as well? (Either directly
    or by testing HEAD)
    
    If not, the fix should still go in win32env.c, not directly in auth.c
    
    -- 
     Magnus Hagander
     Me: http://www.hagander.net/
     Work: http://www.redpill-linpro.com/
    
    
  4. Re: krb_server_keyfile setting doesn't work on Windows

    Inoue, Hiroshi <inoue@tpf.co.jp> — 2009-12-30T22:50:00Z

    Tom Lane wrote:
    > Hiroshi Inoue <inoue@tpf.co.jp> writes:
    >> Because gssapi32.dll(krb5_32.dll) seems to call
    >> getenv("KRB5_KTNAME") in msvcr71, postgres.exe
    >> should call putenv("KRB5_KTNAME=...") in msvcr71.
    >> The attached patch fixes the problem in my test
    >> case.
    > 
    > Don't we already have something like that in our src/port putenv
    > substitute?
    
    Yes, pgwin32_putenv() calls putenv() in msvcrt which libintl
    or other MINGW dlls use. I'm not sure if it's appropriate to
     add msvcr71's putenv call to pgwin32_putenv() (src/port/win32env.c).
    
    regards,
    Hiroshi Inoue
    
    
    
  5. Re: krb_server_keyfile setting doesn't work on Windows

    Inoue, Hiroshi <inoue@tpf.co.jp> — 2009-12-30T23:55:27Z

    Magnus Hagander wrote:
    > 2009/12/30 Hiroshi Inoue <inoue@tpf.co.jp>:
    >> Hi,
    >>
    >> As far as I tested, the krb_server_keyfile setting
    >> in postgres.conf doesn't work on Windows.
    >>
    >> Because gssapi32.dll(krb5_32.dll) seems to call
    >> getenv("KRB5_KTNAME") in msvcr71, postgres.exe
    >> should call putenv("KRB5_KTNAME=...") in msvcr71.
    >> The attached patch fixes the problem in my test
    >> case.
    > 
    > Isn't the main backend linked with msvcr71.dll anyway?
    
    What main backend directly links is msvcr80 or msvcr90
    according to the msvc build environment.
    
    > Then the
    > regular putenv should put it in th eenv of  msvcr71.dll, and the stuff
    > that's wrapped through src/port/win32env.c will put it in the regular
    > msvcr file.
    > 
    > I wonder if you're possibly being hit with the bug I patched the other
    > day, but didn't backpatch.
    > (http://git.postgresql.org/gitweb?p=postgresql.git;a=commitdiff;h=f8bcd7220b1166f7c037ceaf0a53958cbc6a7630).
    > 
    > Can you see if that fix solves your problem as well? (Either directly
    > or by testing HEAD)
    
    I'm testing using the current cvs.
    
    > If not, the fix should still go in win32env.c, not directly in auth.c
    
    I don't object to it. Possibly we would have to add msvcr80 or
      msvcr90 as well in the future.
    
    regards,
    Hiroshi Inoue
    
    
    
  6. Re: krb_server_keyfile setting doesn't work on Windows

    Magnus Hagander <magnus@hagander.net> — 2009-12-30T23:57:55Z

    2009/12/31 Hiroshi Inoue <inoue@tpf.co.jp>:
    > Magnus Hagander wrote:
    >>
    >> 2009/12/30 Hiroshi Inoue <inoue@tpf.co.jp>:
    >>>
    >>> Hi,
    >>>
    >>> As far as I tested, the krb_server_keyfile setting
    >>> in postgres.conf doesn't work on Windows.
    >>>
    >>> Because gssapi32.dll(krb5_32.dll) seems to call
    >>> getenv("KRB5_KTNAME") in msvcr71, postgres.exe
    >>> should call putenv("KRB5_KTNAME=...") in msvcr71.
    >>> The attached patch fixes the problem in my test
    >>> case.
    >>
    >> Isn't the main backend linked with msvcr71.dll anyway?
    >
    > What main backend directly links is msvcr80 or msvcr90
    > according to the msvc build environment.
    
    Arrgh. My bad, I thought msvcr71 was vs2005. Now that you put it like
    this, I know it's vs2003.
    
    
    >> Then the
    >> regular putenv should put it in th eenv of  msvcr71.dll, and the stuff
    >> that's wrapped through src/port/win32env.c will put it in the regular
    >> msvcr file.
    >>
    >> I wonder if you're possibly being hit with the bug I patched the other
    >> day, but didn't backpatch.
    >> (http://git.postgresql.org/gitweb?p=postgresql.git;a=commitdiff;h=f8bcd7220b1166f7c037ceaf0a53958cbc6a7630).
    >>
    >> Can you see if that fix solves your problem as well? (Either directly
    >> or by testing HEAD)
    >
    > I'm testing using the current cvs.
    >
    >> If not, the fix should still go in win32env.c, not directly in auth.c
    >
    > I don't object to it. Possibly we would have to add msvcr80 or
    >  msvcr90 as well in the future.
    
    To be safe, yes, we should have that. Do you want to work on such a
    complete solution, or should I look at it?
    
    -- 
     Magnus Hagander
     Me: http://www.hagander.net/
     Work: http://www.redpill-linpro.com/
    
    
  7. Re: krb_server_keyfile setting doesn't work on Windows

    Magnus Hagander <magnus@hagander.net> — 2010-01-01T14:57:59Z

    On Thu, Dec 31, 2009 at 00:57, Magnus Hagander <magnus@hagander.net> wrote:
    > 2009/12/31 Hiroshi Inoue <inoue@tpf.co.jp>:
    >> Magnus Hagander wrote:
    >>>
    >>> 2009/12/30 Hiroshi Inoue <inoue@tpf.co.jp>:
    >>>>
    >>>> Hi,
    >>>>
    >>>> As far as I tested, the krb_server_keyfile setting
    >>>> in postgres.conf doesn't work on Windows.
    >>>>
    >>>> Because gssapi32.dll(krb5_32.dll) seems to call
    >>>> getenv("KRB5_KTNAME") in msvcr71, postgres.exe
    >>>> should call putenv("KRB5_KTNAME=...") in msvcr71.
    >>>> The attached patch fixes the problem in my test
    >>>> case.
    >>>
    >>> Isn't the main backend linked with msvcr71.dll anyway?
    >>
    >> What main backend directly links is msvcr80 or msvcr90
    >> according to the msvc build environment.
    >
    > Arrgh. My bad, I thought msvcr71 was vs2005. Now that you put it like
    > this, I know it's vs2003.
    >
    >
    >>> Then the
    >>> regular putenv should put it in th eenv of  msvcr71.dll, and the stuff
    >>> that's wrapped through src/port/win32env.c will put it in the regular
    >>> msvcr file.
    >>>
    >>> I wonder if you're possibly being hit with the bug I patched the other
    >>> day, but didn't backpatch.
    >>> (http://git.postgresql.org/gitweb?p=postgresql.git;a=commitdiff;h=f8bcd7220b1166f7c037ceaf0a53958cbc6a7630).
    >>>
    >>> Can you see if that fix solves your problem as well? (Either directly
    >>> or by testing HEAD)
    >>
    >> I'm testing using the current cvs.
    >>
    >>> If not, the fix should still go in win32env.c, not directly in auth.c
    >>
    >> I don't object to it. Possibly we would have to add msvcr80 or
    >>  msvcr90 as well in the future.
    >
    > To be safe, yes, we should have that. Do you want to work on such a
    > complete solution, or should I look at it?
    
    Mail to you seem not to be properly delivered atm :-( Hopefully you
    can read this through the list.
    
    I've applied a patch that should fix this problem, by always updating
    *all* available msvcrt libraries. Please  check that it solves your
    problem as well.
    
    -- 
     Magnus Hagander
     Me: http://www.hagander.net/
     Work: http://www.redpill-linpro.com/
    
    
  8. Re: krb_server_keyfile setting doesn't work on Windows

    Inoue, Hiroshi <inoue@tpf.co.jp> — 2010-01-05T16:40:14Z

    Magnus Hagander wrote:
    > On Thu, Dec 31, 2009 at 00:57, Magnus Hagander <magnus@hagander.net> wrote:
    >> 2009/12/31 Hiroshi Inoue <inoue@tpf.co.jp>:
    >>> Magnus Hagander wrote:
    >>>> 2009/12/30 Hiroshi Inoue <inoue@tpf.co.jp>:
    >>>>> Hi,
    >>>>>
    >>>>> As far as I tested, the krb_server_keyfile setting
    >>>>> in postgres.conf doesn't work on Windows.
    >>>>>
    >>>>> Because gssapi32.dll(krb5_32.dll) seems to call
    >>>>> getenv("KRB5_KTNAME") in msvcr71, postgres.exe
    >>>>> should call putenv("KRB5_KTNAME=...") in msvcr71.
    >>>>> The attached patch fixes the problem in my test
    >>>>> case.
    >>>> Isn't the main backend linked with msvcr71.dll anyway?
    >>> What main backend directly links is msvcr80 or msvcr90
    >>> according to the msvc build environment.
    >> Arrgh. My bad, I thought msvcr71 was vs2005. Now that you put it like
    >> this, I know it's vs2003.
    >>
    >>
    >>>> Then the
    >>>> regular putenv should put it in th eenv of  msvcr71.dll, and the stuff
    >>>> that's wrapped through src/port/win32env.c will put it in the regular
    >>>> msvcr file.
    >>>>
    >>>> I wonder if you're possibly being hit with the bug I patched the other
    >>>> day, but didn't backpatch.
    >>>> (http://git.postgresql.org/gitweb?p=postgresql.git;a=commitdiff;h=f8bcd7220b1166f7c037ceaf0a53958cbc6a7630).
    >>>>
    >>>> Can you see if that fix solves your problem as well? (Either directly
    >>>> or by testing HEAD)
    >>> I'm testing using the current cvs.
    >>>
    >>>> If not, the fix should still go in win32env.c, not directly in auth.c
    >>> I don't object to it. Possibly we would have to add msvcr80 or
    >>>  msvcr90 as well in the future.
    >> To be safe, yes, we should have that. Do you want to work on such a
    >> complete solution, or should I look at it?
    > 
    > Mail to you seem not to be properly delivered atm :-( Hopefully you
    > can read this through the list.
    
    Sorry for the delay - I've been on new year holiday in Japan.
    
    > I've applied a patch that should fix this problem, by always updating
    > *all* available msvcrt libraries. Please  check that it solves your
    > problem as well.
    
    I checked the behavior using the current cvs and it works well.
    Thanks.
    
    regards,
    Hiroshi Inoue