On Tue, Oct 02, 2007 at 08:42:28AM +0200, Magnus Hagander wrote:
> > > http://www.openssl.org/docs/crypto/ERR_set_mark.html
> > > says
> > > ERR_set_mark() and ERR_pop_to_mark() were added in OpenSSL 0.9.8.
> >
> > > Ooops. Back to the drawing board.
> >
> > To get the buildfarm going again, I applied a patch that turns these
> > calls into no-ops if the local OpenSSL hasn't got the functions.
> > I'm not entirely sure if the net result is a regression for pre-0.9.8
> > OpenSSLs or not --- Magnus, any thoughts on that?
> >
>
> I thought of a compromise. We can put back a check if the file exists without
> using bio. That would cover some 99 percent of the messages coming out of
> that
> routine, I bet. And things would still work correct in 0.9.8.
Here's an example of what I meant.
I think this can be reasonable - OpenSSL 0.9.8 is from 2005 after all, so
it's not like we're requiring something extremely new..
//Magnus
Index: fe-secure.c
===================================================================
RCS file: /cvsroot/pgsql/src/interfaces/libpq/fe-secure.c,v
retrieving revision 1.96
diff -c -r1.96 fe-secure.c
*** fe-secure.c 2 Oct 2007 00:25:20 -0000 1.96
--- fe-secure.c 2 Oct 2007 09:04:16 -0000
***************
*** 607,612 ****
--- 607,626 ----
/* read the user certificate */
snprintf(fnbuf, sizeof(fnbuf), "%s/%s", homedir, USER_CERT_FILE);
+
+ /*
+ * OpenSSL <= 0.8.2 lacks error stack handling. Do a separate check
+ * for the existance of the file without using BIO functions to make
+ * it pick up the majority of the cases with the old versions.
+ */
+ if (stat(fnbuf, &buf) == -1)
+ {
+ printfPQExpBuffer(&conn->errorMessage,
+ libpq_gettext("could not open certificate file
\"%s\": %s\n"),
+ fnbuf, pqStrerror(errno,
sebuf, sizeof(sebuf)));
+ return 0;
+ }
+
if ((bio = BIO_new_file(fnbuf, "r")) == NULL)
{
printfPQExpBuffer(&conn->errorMessage,
---------------------------(end of broadcast)---------------------------
TIP 1: if posting/reading through Usenet, please send an appropriate
subscribe-nomail command to [EMAIL PROTECTED] so that your
message can get through to the mailing list cleanly