Commit graph

3255 commits

Author SHA1 Message Date
Tom Lane
0699d053ba Fix portability bugs in use of credentials control messages for peer auth.
Even though our existing code for handling credentials control messages has
been basically unchanged since 2001, it was fundamentally wrong: it did not
ensure proper alignment of the supplied buffer, and it was calculating
buffer sizes and message sizes incorrectly.  This led to failures on
platforms where alignment padding is relevant, for instance FreeBSD on
64-bit platforms, as seen in a recent Debian bug report passed on by
Martin Pitt (http://bugs.debian.org//cgi-bin/bugreport.cgi?bug=612888).

Rewrite to do the message-whacking using the macros specified in RFC 2292,
following a suggestion from Theo de Raadt in that thread.  Tested by me
on Debian/kFreeBSD-amd64; since OpenBSD and NetBSD document the identical
CMSG API, it should work there too.

Back-patch to all supported branches.
2011-05-30 19:16:17 -04:00
Tom Lane
891c23ff6e Fix write-past-buffer-end in ldapServiceLookup().
The code to assemble ldap_get_values_len's output into a single string
wrote the terminating null one byte past where it should.  Fix that,
and make some other cosmetic adjustments to make the code a trifle more
readable and more in line with usual Postgres coding style.

Also, free the "result" string when done with it, to avoid a permanent
memory leak.

Bug report and patch by Albe Laurenz, cosmetic adjustments by me.
2011-05-12 11:57:15 -04:00
Marc G. Fournier
7b8b256f08 Tag 8.4.8. 2011-04-15 00:17:14 -03:00
Tom Lane
42e663cc41 Add CheckTableNotInUse calls in DROP TABLE and DROP INDEX.
Recent releases had a check on rel->rd_refcnt in heap_drop_with_catalog,
but failed to cover the possibility of pending trigger events at DROP time.
(Before 8.4 we didn't even check the refcnt.)  When the trigger events were
eventually fired, you'd get "could not open relation with OID nnn" errors,
as in recent report from strk.  Better to throw a suitable error when the
DROP is attempted.

Also add a similar check in DROP INDEX.

Back-patch to all supported branches.
2011-02-15 15:50:06 -05:00
Marc G. Fournier
7df910c7d1 Tag 8.4.7 2011-01-27 22:23:36 -04:00
Andrew Dunstan
370a899696 Allow vpath builds and regression tests to succeed on Mingw. Backpatch to release 8.4 - earlier releases would require more changes and it's not worth the trouble. 2010-12-24 13:32:20 -05:00
Marc G. Fournier
35862ff7f2 Tag 8.4.6. 2010-12-13 22:59:19 -04:00
Peter Eisentraut
9ee4b6f0e1 Translation updates for release 8.4.6 2010-12-13 22:40:15 +02:00
Tom Lane
d4346e15b4 Fix ecpg test building process to not generate *.dSYM junk on Macs.
The trick is to not try to build executables directly from .c files,
but to always build the intermediate .o files.  For obscure reasons,
Darwin's version of gcc will leave debug cruft behind in the first
case but not the second.  Per complaint from Robert Haas.
2010-10-20 00:55:07 -04:00
Michael Meskes
a0e02dc1af Applied patch by Itagaki Takahiro to fix incorrect status calculation in
ecpglib. Instead of parsing the statement just as ask the database server.
2010-10-14 17:51:53 +02:00
Marc G. Fournier
2f76a4b5a6 Tag 8.4.5 2010-10-01 10:35:31 -03:00
Peter Eisentraut
1100d1eaff Translation updates for 8.4.5 2010-09-30 23:31:19 +03:00
Tom Lane
76833aeab9 Still more .gitignore cleanup.
Fix overly-enthusiastic ignores, as identified by
git ls-files -i --exclude-standard
2010-09-24 13:48:26 -04:00
Tom Lane
41b04faf7d More fixes for libpq's .gitignore file.
The previous patches failed to cover a lot of symlinks that are only
added in platform-specific cases.  Make the lists match what's in the
Makefile for each branch.
2010-09-22 22:32:30 -04:00
Magnus Hagander
2792c82ba9 Add gitignore files for ecpg regression tests.
Backpatch to 8.2 as that's how far the structure looks the same.
2010-09-22 21:49:09 +02:00
Magnus Hagander
40f34ec4fd Convert cvsignore to gitignore, and add .gitignore for build targets. 2010-09-22 12:57:08 +02:00
Michael Meskes
b9b65b7417 Applied Zoltan's patch to fix a few memleaks in ecpg's pgtypeslib. 2010-08-17 09:41:49 +00:00
Tom Lane
ba1dfcec96 Allow full SSL certificate verification (wherein libpq checks its host name
parameter against server cert's CN field) to succeed in the case where
both host and hostaddr are specified.  As with the existing precedents
for Kerberos, GSSAPI, SSPI, it is the calling application's responsibility
that host and hostaddr match up --- we just use the host name as given.
Per bug #5559 from Christopher Head.

In passing, make the error handling and messages for the no-host-name-given
failure more consistent among these four cases, and correct a lie in the
documentation: we don't attempt to reverse-lookup host from hostaddr
if host is missing.

Back-patch to 8.4 where SSL cert verification was introduced.
2010-07-14 17:10:03 +00:00
Michael Meskes
32c6702f4d Data returned by RETURNING clause wasn't correctly processed by ecpg. Patch backported from HEAD. 2010-06-04 10:48:05 +00:00
Marc G. Fournier
c302ed9e4e tag 8.4.4 2010-05-14 03:20:06 +00:00
Peter Eisentraut
df17169ec3 Translation update 2010-05-13 10:50:20 +00:00
Tom Lane
191c52a27b Work around a subtle portability problem in use of printf %s format.
Depending on which spec you read, field widths and precisions in %s may be
counted either in bytes or characters.  Our code was assuming bytes, which
is wrong at least for glibc's implementation, and in any case libc might
have a different idea of the prevailing encoding than we do.  Hence, for
portable results we must avoid using anything more complex than just "%s"
unless the string to be printed is known to be all-ASCII.

This patch fixes the cases I could find, including the psql formatting
failure reported by Hernan Gonzalez.  In HEAD only, I also added comments
to some places where it appears safe to continue using "%.*s".
2010-05-08 16:40:03 +00:00
Michael Meskes
aa4a0e6fc3 ECPG connect routine only checked for NULL to find empty parameters, but user and password can also be "". 2010-05-07 19:38:17 +00:00
Marc G. Fournier
d6c7c7c6bc tag 8.4.3 2010-03-12 03:23:23 +00:00
Michael Meskes
2bf64bc275 Backport fix from HEAD that makes ecpglib give the right SQLSTATE if the connection disappears. 2010-03-08 13:07:00 +00:00
Magnus Hagander
5277419237 Require hostname to be set when using GSSAPI authentication. Without it,
the GSSAPI libraries crash.

Noted by Zdenek Kotala
2010-03-08 10:01:24 +00:00
Tom Lane
fe9a5f2f66 Fix a couple of places that would loop forever if attempts to read a stdio file
set ferror() but never set feof().  This is known to be the case for recent
glibc when trying to read a directory as a file, and might be true for other
platforms/cases too.  Per report from Ed L.  (There is more that we ought to
do about his report, but this is one easily identifiable issue.)
2010-03-03 20:31:16 +00:00
Michael Meskes
6e417452e3 Backported fix for protecting ecpg against applications freeing strings to 8.4. 2010-01-08 09:22:44 +00:00
Tom Lane
eb63765a38 Set errno to zero before invoking SSL_read or SSL_write. It appears that
at least in some Windows versions, these functions are capable of returning
a failure indication without setting errno.  That puts us into an infinite
loop if the previous value happened to be EINTR.  Per report from Brendan
Hill.

Back-patch to 8.2.  We could take it further back, but since this is only
known to be an issue on Windows and we don't support Windows before 8.2,
it does not seem worth the trouble.
2009-12-30 03:45:53 +00:00
Marc G. Fournier
5cc7c13022 tag for 8.4.2 2009-12-10 02:56:56 +00:00
Magnus Hagander
1ac3651be2 Reject certificates with embedded NULLs in the commonName field. This stops
attacks where an attacker would put <attack>\0<propername> in the field and
trick the validation code that the certificate was for <attack>.

This is a very low risk attack since it reuqires the attacker to trick the
CA into issuing a certificate with an incorrect field, and the common
PostgreSQL deployments are with private CAs, and not external ones. Also,
default mode in 8.4 does not do any name validation, and is thus also not
vulnerable - but the higher security modes are.

Backpatch all the way. Even though versions 8.3.x and before didn't have
certificate name validation support, they still exposed this field for
the user to perform the validation in the application code, and there
is no way to detect this problem through that API.

Security: CVE-2009-4034
2009-12-09 06:37:29 +00:00
Michael Meskes
2164a24686 Remove */ characters from declare cursor statements before putting them into a
comment.
2009-11-27 16:11:50 +00:00
Tom Lane
1e925f49e7 Refactor ecpg grammar so that it uses the core grammar's unreserved_keyword
list, minus a few specific words that have to be treated specially.  This
replaces a hard-wired list of keywords that would have needed manual
maintenance, and was not getting it.  The 8.4 coding was already missing
these words, causing ecpg to incorrectly treat them as reserved words:
CALLED, CATALOG, DEFINER, ENUM, FOLLOWING, INVOKER, OPTIONS, PARTITION,
PRECEDING, RANGE, SECURITY, SERVER, UNBOUNDED, WRAPPER.  In HEAD we were
additionally missing COMMENTS, FUNCTIONS, SEQUENCES, TABLES.
Per gripe from Bosco Rama.
2009-11-21 05:44:12 +00:00
Tom Lane
3385dcc8c8 Remove outside-the-scanner references to "yyleng".
It seems the flex developers have decided to change yyleng from int to size_t.
This has already happened in the latest release of OS X, and will start
happening elsewhere once the next release of flex appears.  Rather than trying
to divine how it's declared in any particular build, let's just remove the one
existing not-very-necessary external usage.

Back-patch to all supported branches; not so much because users in the field
are likely to care about building old branches with cutting-edge flex, as
to keep OSX-based buildfarm members from having problems with old branches.
2009-09-08 04:25:14 +00:00
Marc G. Fournier
6883b7df92 Tag 8.4.1 2009-09-04 00:36:51 +00:00
Peter Eisentraut
3e2440970a Translation updates 2009-09-03 21:01:26 +00:00
Magnus Hagander
51ecc4b10e Fix mismatch in const:ness of parameters. 2009-07-22 11:07:04 +00:00
Peter Eisentraut
a6667d96c5 Translation updates for 8.4 release.
File that are translated less than 80% have been removed, as per new
translation team policy.
2009-06-26 19:33:52 +00:00
Magnus Hagander
a93e7432cf Properly initialize SSL engines when used from libpq. This is required for
most external engines.

Per report and initial code from Lars Kanis
2009-06-23 18:13:23 +00:00
Bruce Momjian
d747140279 8.4 pgindent run, with new combined Linux/FreeBSD/MinGW typedef list
provided by Andrew.
2009-06-11 14:49:15 +00:00
Peter Eisentraut
0b7b908882 Translation updates 2009-06-10 23:42:44 +00:00
Peter Eisentraut
0465c52b00 Arrange that the string "syntax error" generated by bison is translated. 2009-06-10 23:11:52 +00:00
Tom Lane
b5c838e170 Clean up ecpg's use of mmerror(): const-ify the format argument, add an
__attribute__() marker so that gcc can validate the format string against
the actual arguments, get rid of overcomplicated and unsafe usage in
base_yyerror().
2009-06-03 20:24:51 +00:00
Michael Meskes
e7f4923d3b Reverting patch just in case a compiler treats this enum as signed. 2009-05-27 14:16:51 +00:00
Tom Lane
8af641ac1f Remove unused declarations of EncodeTimeOnly and DecodeTimeOnly. 2009-05-26 01:39:49 +00:00
Michael Meskes
ab9981ccc6 Removed comparison of unsigned expression < 0. 2009-05-21 12:54:27 +00:00
Michael Meskes
14f29f640a Removed unsigned/signed mismatches. 2009-05-20 16:49:23 +00:00
Michael Meskes
11a497f99a More variables gcc moans about 2009-05-20 16:39:56 +00:00
Michael Meskes
0754b391f3 Removed some unneeded variables and comparisons 2009-05-20 16:13:18 +00:00
Tom Lane
2c39ab12f3 Make pwdfMatchesString() a little more careful about matching * fields. 2009-05-18 16:15:22 +00:00