Thread: Re: [PORTS] openbsd 3.2, postgresql 7.3beta3 and openssl 'e_os.h' include

Re: [PORTS] openbsd 3.2, postgresql 7.3beta3 and openssl 'e_os.h' include

From
Bruce Momjian
Date:
Peter Galbavy wrote:
> According to the feedback I have had, e_os.h is no longer a public interface
> header file in OpenSSL. 'get_last_socket_error' is a macro that seems to
> expand to errno.
>
> Can I suggest someone with better understanding of the postgresql sources,
> and ssl support, please pick this up - maybe in time for the 7.3 release ?

OK, I am using:

    #$ openssl
    OpenSSL> version
    OpenSSL 0.9.6e 30 Jul 2002

and ssl compiles fine here.  What version are you using, exactly.

Maybe OpenBSD considered e_os.h to be a security risk.  ;-)

I don't think this will make 7.3 unless we can find more information.  I
am hesitant to make any changes that may break openssl on other
platforms.  If we can find a solution, it may be in 7.3.1.

--
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073

Re: [PORTS] openbsd 3.2, postgresql 7.3beta3 and openssl 'e_os.h' include

From
Tom Lane
Date:
Bruce Momjian <pgman@candle.pha.pa.us> writes:
> Peter Galbavy wrote:
>> According to the feedback I have had, e_os.h is no longer a public interface
>> header file in OpenSSL. 'get_last_socket_error' is a macro that seems to
>> expand to errno.

> OK, I am using:
>     #$ openssl
>     OpenSSL> version
>     OpenSSL 0.9.6e 30 Jul 2002

> and ssl compiles fine here.  What version are you using, exactly.

I have OpenSSL 0.9.6g here (which is still the current release according
to www.openssl.org).  openssl/e_os.h is certainly still there ... but it
does contain the comment

/* <openssl/e_os2.h> contains what we can justify to make visible
 * to the outside; this file e_os.h is not part of the exported
 * interface. */

which may have prompted the OpenBSD porter to not include it?

Anyway, get_last_socket_error() seems exactly equivalent to our macro
SOCK_ERRNO in libpq/libpq-int.h.  AFAICT, the uses of it in our
code are these:

/home/postgres/pgsql/src/backend/libpq/be-secure.c:
errno = get_last_socket_error();
/home/postgres/pgsql/src/backend/libpq/be-secure.c:
errno = get_last_socket_error();
/home/postgres/pgsql/src/interfaces/libpq/fe-secure.c:
SOCK_ERRNO = get_last_socket_error();
/home/postgres/pgsql/src/interfaces/libpq/fe-secure.c:
SOCK_ERRNO = get_last_socket_error();

and I think every one of these is bogus and should be removed.
At best they're no-ops.

If that is the only use of e_os.h stuff then we can stop including
the file ...

            regards, tom lane

Re: [PORTS] openbsd 3.2, postgresql 7.3beta3 and openssl 'e_os.h' include

From
Tom Lane
Date:
I said:
> Anyway, get_last_socket_error() seems exactly equivalent to our macro
> SOCK_ERRNO in libpq/libpq-int.h.  AFAICT, the uses of it in our
> code are these:

> /home/postgres/pgsql/src/backend/libpq/be-secure.c:
> errno = get_last_socket_error();
> /home/postgres/pgsql/src/backend/libpq/be-secure.c:
> errno = get_last_socket_error();
> /home/postgres/pgsql/src/interfaces/libpq/fe-secure.c:
> SOCK_ERRNO = get_last_socket_error();
> /home/postgres/pgsql/src/interfaces/libpq/fe-secure.c:
> SOCK_ERRNO = get_last_socket_error();

> and I think every one of these is bogus and should be removed.
> At best they're no-ops.

> If that is the only use of e_os.h stuff then we can stop including
> the file ...

These were indeed the only uses of e_os.h symbols.  I have removed them
and the #includes.

            regards, tom lane