summaryrefslogtreecommitdiff
path: root/src/interfaces
AgeCommit message (Collapse)Author
2012-08-14Stamp 9.0.9.REL9_0_9Tom Lane
2012-08-14Translation updatesPeter Eisentraut
2012-06-19Update copyright year in forgotten placesPeter Eisentraut
found by Stefan Kaltenbrunner
2012-05-31Stamp 9.0.8.REL9_0_8Tom Lane
2012-05-31Translation updatesPeter Eisentraut
2012-03-11ecpg: Fix off-by-one error in memory copyingPeter Eisentraut
In a rare case, one byte past the end of memory belonging to the sqlca_t structure would be written to. found by Coverity
2012-03-11ecpg: Fix rare memory leaksPeter Eisentraut
found by Coverity
2012-02-23Stamp 9.0.7.REL9_0_7Tom Lane
2012-02-23Remove arbitrary limitation on length of common name in SSL certificates.Tom Lane
Both libpq and the backend would truncate a common name extracted from a certificate at 32 bytes. Replace that fixed-size buffer with dynamically allocated string so that there is no hard limit. While at it, remove the code for extracting peer_dn, which we weren't using for anything; and don't bother to store peer_cn longer than we need it in libpq. This limit was not so terribly unreasonable when the code was written, because we weren't using the result for anything critical, just logging it. But now that there are options for checking the common name against the server host name (in libpq) or using it as the user's name (in the server), this could result in undesirable failures. In the worst case it even seems possible to spoof a server name or user name, if the correct name is exactly 32 bytes and the attacker can persuade a trusted CA to issue a certificate in which that string is a prefix of the certificate's common name. (To exploit this for a server name, he'd also have to send the connection astray via phony DNS data or some such.) The case that this is a realistic security threat is a bit thin, but nonetheless we'll treat it as one. Back-patch to 8.4. Older releases contain the faulty code, but it's not a security problem because the common name wasn't used for anything interesting. Reported and patched by Heikki Linnakangas Security: CVE-2012-0867
2012-02-23Translation updatesPeter Eisentraut
2012-02-13Do not use the variable name when defining a varchar structure in ecpg.Michael Meskes
With a unique counter being added anyway, there is no need anymore to have the variable name listed, too.
2012-02-06fe-misc.c depends on pg_config_paths.hAlvaro Herrera
Declare this in Makefile to avoid failures in parallel compiles. Author: Lionel Elie Mamane
2011-12-18In ecpg removed old leftover check for given connection name.Michael Meskes
Ever since we introduced real prepared statements this should work for different connections. The old solution just emulating prepared statements, though, wasn't able to handle this. Closes: #6309
2011-12-04Applied another patch by Zoltan to fix memory alignement issues in ecpg's sqldaMichael Meskes
code.
2011-12-03Treat ENOTDIR as ENOENT when looking for client certificate fileMagnus Hagander
This makes it possible to use a libpq app with home directory set to /dev/null, for example - treating it the same as if the file doesn't exist (which it doesn't). Per bug #6302, reported by Diego Elio Petteno
2011-12-01Stamp 9.0.6.REL9_0_6Tom Lane
2011-12-01Translation updatesPeter Eisentraut
2011-11-17Applied Zoltan's patch to correctly align interval and timestamp data in ↵Michael Meskes
ecpg's sqlda.
2011-11-13Applied patch by Zoltan to fix copy&paste bug in ecpg's sqlda handling.Michael Meskes
2011-09-22Stamp 9.0.5.REL9_0_5Tom Lane
2011-09-22Translation updatesPeter Eisentraut
2011-09-08Add missing format argument to ecpg_log() callPeter Eisentraut
2011-09-02Fix brace indentation of commit f8c74422010e63506fa69635ea61920bc042b70e to ↵Michael Meskes
fit PostgreSQL style.
2011-09-01In ecpglib restore LC_NUMERIC in case of an error.Michael Meskes
2011-08-27Don't assume that "E" response to NEGOTIATE_SSL_CODE means pre-7.0 server.Tom Lane
These days, such a response is far more likely to signify a server-side problem, such as fork failure. Reporting "server does not support SSL" (in sslmode=require) could be quite misleading. But the results could be even worse in sslmode=prefer: if the problem was transient and the next connection attempt succeeds, we'll have silently fallen back to protocol version 2.0, possibly disabling features the user needs. Hence, it seems best to just eliminate the assumption that backing off to non-SSL/2.0 protocol is the way to recover from an "E" response, and instead treat the server error the same as we would in non-SSL cases. I tested this change against a pre-7.0 server, and found that there was a second logic bug in the "prefer" path: the test to decide whether to make a fallback connection attempt assumed that we must have opened conn->ssl, which in fact does not happen given an "E" response. After fixing that, the code does indeed connect successfully to pre-7.0, as long as you didn't set sslmode=require. (If you did, you get "Unsupported frontend protocol", which isn't completely off base given the server certainly doesn't support SSL.) Since there seems no reason to believe that pre-7.0 servers exist anymore in the wild, back-patch to all supported branches.
2011-08-27Ensure we discard unread/unsent data when abandoning a connection attempt.Tom Lane
There are assorted situations wherein PQconnectPoll() will abandon a connection attempt and try again with different parameters (eg, SSL versus not SSL). However, the code forgot to discard any pending data in libpq's I/O buffers when doing this. In at least one case (server returns E message during SSL negotiation), there is unread input data which bollixes the next connection attempt. I have not checked to see whether this is possible in the other cases where we close the socket and retry, but it seems like a matter of good defensive programming to add explicit buffer-flushing code to all of them. This is one of several issues exposed by Daniel Farina's report of misbehavior after a server-side fork failure. This has been wrong since forever, so back-patch to all supported branches.
2011-07-24Fix previous patch so it also works if not USE_SSL (mea culpa).Tom Lane
On balance, the need to cover this case changes my mind in favor of pushing all error-message generation duties into the two fe-secure.c routines. So do it that way.
2011-07-24Improve libpq's error reporting for SSL failures.Tom Lane
In many cases, pqsecure_read/pqsecure_write set up useful error messages, which were then overwritten with useless ones by their callers. Fix this by defining the responsibility to set an error message to be entirely that of the lower-level function when using SSL. Back-patch to 8.3; the code is too different in 8.2 to be worth the trouble.
2011-07-24Use OpenSSL's SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER flag.Tom Lane
This disables an entirely unnecessary "sanity check" that causes failures in nonblocking mode, because OpenSSL complains if we move or compact the write buffer. The only actual requirement is that we not modify pending data once we've attempted to send it, which we don't. Per testing and research by Martin Pihlak, though this fix is a lot simpler than his patch. I put the same change into the backend, although it's less clear whether it's necessary there. We do use nonblock mode in some situations in streaming replication, so seems best to keep the same behavior in the backend as in libpq. Back-patch to all supported releases.
2011-07-21Fix PQsetvalue() to avoid possible crash when adding a new tuple.Tom Lane
PQsetvalue unnecessarily duplicated the logic in pqAddTuple, and didn't duplicate it exactly either --- pqAddTuple does not care what is in the tuple-pointer array positions beyond the last valid entry, whereas the code in PQsetvalue assumed such positions would contain NULL. This led to possible crashes if PQsetvalue was applied to a PGresult that had previously been enlarged with pqAddTuple, for instance one built from a server query. Fix by relying on pqAddTuple instead of duplicating logic, and not assuming anything about the contents of res->tuples[res->ntups]. Back-patch to 8.4, where PQsetvalue was introduced. Andrew Chernow
2011-07-18Adapted expected result for latest change to ecpglib.Michael Meskes
2011-07-18Made ecpglib write double with a precision of 15 digits.Michael Meskes
Patch originally by Akira Kurosawa <kurosawa-akira@mxc.nes.nec.co.jp>.
2011-06-14Fix assorted issues with build and install paths containing spaces.Tom Lane
Apparently there is no buildfarm critter exercising this case after all, because it fails in several places. With this patch, build, install, check-world, and installcheck-world pass for me on OS X.
2011-05-30Fix portability bugs in use of credentials control messages for peer auth.Tom Lane
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-12Fix write-past-buffer-end in ldapServiceLookup().Tom Lane
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-04-19Silence compiler warning about unused variable on Windows.Heikki Linnakangas
2011-04-15Tag 9.0.4.REL9_0_4Marc G. Fournier
2011-04-14Translation updatesPeter Eisentraut
2011-04-10Adjust regression tests on cube and ECPG for MinGW 64 bit compiler.Andrew Dunstan
Backport to 9.0, we're not supporting this compiler on earlier releases.
2011-04-02Fix typo in PQconnectStartParams().Tom Lane
This would lead to leaking the PGconn structure after an error detected by conninfo_array_parse(), as well as failing to return a useful error message in such cases. Backpatch to 9.0 where the error was introduced. Joseph Adams
2011-03-11In ecpg preprocessor, don't try to look up constants in the test forHeikki Linnakangas
variable hiding. A constant is not a variable. It worked in most cases by accident, because we add constants to the global list of variables (why?), but float constants like 1.23 were interpreted as struct field references, and not found. Backpatch to 9.0, where the test for variable hiding was added.
2011-03-04In initialize_SSL, don't fail unnecessarily when home dir is unavailable.Tom Lane
Instead, just act as though the certificate file(s) are not present. There is only one case where this need be a hard failure condition: when sslmode is verify-ca or verify-full, not having a root cert file is an error. Change the logic so that we complain only in that case, and otherwise fall through cleanly. This is how it used to behave pre-9.0, but my patch 4ed4b6c54e5fab24ab2624d80e26f7546edc88ad of 2010-05-26 broke the case. Per report from Christian Kastner.
2011-02-15Add CheckTableNotInUse calls in DROP TABLE and DROP INDEX.Tom Lane
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-01-27Tag 9.0.3REL9_0_3Marc G. Fournier
2011-01-08In ecpg's parser removed a fixed length limit for constants defining an ↵Michael Meskes
array dimension.
2010-12-24Allow vpath builds and regression tests to succeed on Mingw. Backpatch to ↵Andrew Dunstan
release 8.4 - earlier releases would require more changes and it's not worth the trouble.
2010-12-13Tag 9.0.2.REL9_0_2Marc G. Fournier
2010-12-13Translation updates for release 9.0.2Peter Eisentraut
2010-10-20Fix ecpg test building process to not generate *.dSYM junk on Macs.Tom Lane
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-14Applied patch by Itagaki Takahiro to fix incorrect status calculation inMichael Meskes
ecpglib. Instead of parsing the statement just as ask the database server.