1. 16 Aug, 2012 7 commits
  2. 15 Aug, 2012 13 commits
  3. 14 Aug, 2012 7 commits
    • Tom Lane's avatar
      e45ae401
    • Tom Lane's avatar
      Prevent access to external files/URLs via contrib/xml2's xslt_process(). · adc97d03
      Tom Lane authored
      libxslt offers the ability to read and write both files and URLs through
      stylesheet commands, thus allowing unprivileged database users to both read
      and write data with the privileges of the database server.  Disable that
      through proper use of libxslt's security options.
      
      Also, remove xslt_process()'s ability to fetch documents and stylesheets
      from external files/URLs.  While this was a documented "feature", it was
      long regarded as a terrible idea.  The fix for CVE-2012-3489 broke that
      capability, and rather than expend effort on trying to fix it, we're just
      going to summarily remove it.
      
      While the ability to write as well as read makes this security hole
      considerably worse than CVE-2012-3489, the problem is mitigated by the fact
      that xslt_process() is not available unless contrib/xml2 is installed,
      and the longstanding warnings about security risks from that should have
      discouraged prudent DBAs from installing it in security-exposed databases.
      
      Reported and fixed by Peter Eisentraut.
      
      Security: CVE-2012-3488
      adc97d03
    • Tom Lane's avatar
      Prevent access to external files/URLs via XML entity references. · 17351fce
      Tom Lane authored
      xml_parse() would attempt to fetch external files or URLs as needed to
      resolve DTD and entity references in an XML value, thus allowing
      unprivileged database users to attempt to fetch data with the privileges
      of the database server.  While the external data wouldn't get returned
      directly to the user, portions of it could be exposed in error messages
      if the data didn't parse as valid XML; and in any case the mere ability
      to check existence of a file might be useful to an attacker.
      
      The ideal solution to this would still allow fetching of references that
      are listed in the host system's XML catalogs, so that documents can be
      validated according to installed DTDs.  However, doing that with the
      available libxml2 APIs appears complex and error-prone, so we're not going
      to risk it in a security patch that necessarily hasn't gotten wide review.
      So this patch merely shuts off all access, causing any external fetch to
      silently expand to an empty string.  A future patch may improve this.
      
      In HEAD and 9.2, also suppress warnings about undefined entities, which
      would otherwise occur as a result of not loading referenced DTDs.  Previous
      branches don't show such warnings anyway, due to different error handling
      arrangements.
      
      Credit to Noah Misch for first reporting the problem, and for much work
      towards a solution, though this simplistic approach was not his preference.
      Also thanks to Daniel Veillard for consultation.
      
      Security: CVE-2012-3489
      17351fce
    • Bruce Momjian's avatar
      Revert "commit_delay" change; just add comment that we don't have · 03bda453
      Bruce Momjian authored
      a microsecond specification.
      03bda453
    • Bruce Momjian's avatar
      Add pg_settings units display for "commit_delay" (ms). · e7472744
      Bruce Momjian authored
      Also remove unnecessary units designation in postgresql.conf.sample.
      e7472744
    • Bruce Momjian's avatar
      In documentation, change "recommendable" to "recommended", per · 1d96cf94
      Bruce Momjian authored
      consultation with word definitions.
      
      Backpatch to 9.2.
      1d96cf94
    • Tom Lane's avatar
      Update time zone data files to tzdata release 2012e. · 51fd748e
      Tom Lane authored
      DST law changes in Morocco; Tokelau has relocated to the other side of
      the International Date Line; and apparently Olson had Tokelau's GMT
      offset wrong by an hour even before that.
      
      There are also a large number of non-significant changes in this update.
      Upstream took the opportunity to remove trailing whitespace, and the
      SCCS-style version numbers on the individual files are gone too.
      51fd748e
  4. 13 Aug, 2012 1 commit
    • Heikki Linnakangas's avatar
      Add runtime checks for number of query parameters passed to libpq functions. · f86e6ba4
      Heikki Linnakangas authored
      The maximum number of parameters supported by the FE/BE protocol is 65535,
      as it's transmitted as a 16-bit unsigned integer. However, the nParams
      arguments to libpq functions are all of type 'int'. We can't change the
      signature of libpq functions, but a simple bounds check is in order to make
      it more clear what's going wrong if you try to pass more than 65535
      parameters.
      
      Per complaint from Jim Vanns.
      f86e6ba4
  5. 12 Aug, 2012 1 commit
    • Tom Lane's avatar
      More fixes for planner's handling of LATERAL. · c1774d2c
      Tom Lane authored
      Re-allow subquery pullup for LATERAL subqueries, except when the subquery
      is below an outer join and contains lateral references to relations outside
      that outer join.  If we pull up in such a case, we risk introducing lateral
      cross-references into outer joins' ON quals, which is something the code is
      entirely unprepared to cope with right now; and I'm not sure it'll ever be
      worth coping with.
      
      Support lateral refs in VALUES (this seems to be the only additional path
      type that needs such support as a consequence of re-allowing subquery
      pullup).
      
      Put in a slightly hacky fix for joinpath.c's refusal to consider
      parameterized join paths even when there cannot be any unparameterized
      ones.  This was causing "could not devise a query plan for the given query"
      failures in queries involving more than two FROM items.
      
      Put in an even more hacky fix for distribute_qual_to_rels() being unhappy
      with join quals that contain references to rels outside their syntactic
      scope; which is to say, disable that test altogether.  Need to think about
      how to preserve some sort of debugging cross-check here, while not
      expending more cycles than befits a debugging cross-check.
      c1774d2c
  6. 11 Aug, 2012 3 commits
    • Tom Lane's avatar
      Fix some issues with LATERAL(SELECT UNION ALL SELECT). · e76af541
      Tom Lane authored
      The LATERAL marking has to be propagated down to the UNION leaf queries
      when we pull them up.  Also, fix the formerly stubbed-off
      set_append_rel_pathlist().  It does already have enough smarts to cope with
      making a parameterized Append path at need; it just has to not assume that
      there *must* be an unparameterized path.
      e76af541
    • Tom Lane's avatar
      Add link from COPY ref page to psql \copy. · 83af58f6
      Tom Lane authored
      Jeff Janes
      83af58f6
    • Tom Lane's avatar
      Fix dependencies generated during ALTER TABLE ADD CONSTRAINT USING INDEX. · b5380035
      Tom Lane authored
      This command generated new pg_depend entries linking the index to the
      constraint and the constraint to the table, which match the entries made
      when a unique or primary key constraint is built de novo.  However, it did
      not bother to get rid of the entries linking the index directly to the
      table.  We had considered the issue when the ADD CONSTRAINT USING INDEX
      patch was written, and concluded that we didn't need to get rid of the
      extra entries.  But this is wrong: ALTER COLUMN TYPE wasn't expecting such
      redundant dependencies to exist, as reported by Hubert Depesz Lubaczewski.
      On reflection it seems rather likely to break other things as well, since
      there are many bits of code that crawl pg_depend for one purpose or
      another, and most of them are pretty naive about what relationships they're
      expecting to find.  Fortunately it's not that hard to get rid of the extra
      dependency entries, so let's do that.
      
      Back-patch to 9.1, where ALTER TABLE ADD CONSTRAINT USING INDEX was added.
      b5380035
  7. 10 Aug, 2012 7 commits
    • Tom Lane's avatar
      Update overlooked comment. · a67d6d9a
      Tom Lane authored
      a67d6d9a
    • Tom Lane's avatar
      Support having multiple Unix-domain sockets per postmaster. · c9b0cbe9
      Tom Lane authored
      Replace unix_socket_directory with unix_socket_directories, which is a list
      of socket directories, and adjust postmaster's code to allow zero or more
      Unix-domain sockets to be created.
      
      This is mostly a straightforward change, but since the Unix sockets ought
      to be created after the TCP/IP sockets for safety reasons (better chance
      of detecting a port number conflict), AddToDataDirLockFile needs to be
      fixed to support out-of-order updates of data directory lockfile lines.
      That's a change that had been foreseen to be necessary someday anyway.
      
      Honza Horak, reviewed and revised by Tom Lane
      c9b0cbe9
    • Bruce Momjian's avatar
      Prevent pg_upgrade from crashing if it can't write to the current · 85642ec0
      Bruce Momjian authored
      directory.
      
      Backpatch to 9.2.
      85642ec0
    • Bruce Momjian's avatar
      Adjust pgtest coding to be less complex. · 914b1301
      Bruce Momjian authored
      914b1301
    • Bruce Momjian's avatar
    • Tom Lane's avatar
      Centralize the logic for detecting misplaced aggregates, window funcs, etc. · eaccfded
      Tom Lane authored
      Formerly we relied on checking after-the-fact to see if an expression
      contained aggregates, window functions, or sub-selects when it shouldn't.
      This is grotty, easily forgotten (indeed, we had forgotten to teach
      DefineIndex about rejecting window functions), and none too efficient
      since it requires extra traversals of the parse tree.  To improve matters,
      define an enum type that classifies all SQL sub-expressions, store it in
      ParseState to show what kind of expression we are currently parsing, and
      make transformAggregateCall, transformWindowFuncCall, and transformSubLink
      check the expression type and throw error if the type indicates the
      construct is disallowed.  This allows removal of a large number of ad-hoc
      checks scattered around the code base.  The enum type is sufficiently
      fine-grained that we can still produce error messages of at least the
      same specificity as before.
      
      Bringing these error checks together revealed that we'd been none too
      consistent about phrasing of the error messages, so standardize the wording
      a bit.
      
      Also, rewrite checking of aggregate arguments so that it requires only one
      traversal of the arguments, rather than up to three as before.
      
      In passing, clean up some more comments left over from add_missing_from
      support, and annotate some tests that I think are dead code now that that's
      gone.  (I didn't risk actually removing said dead code, though.)
      eaccfded
    • Magnus Hagander's avatar
      Fix upper limit of superuser_reserved_connections, add limit for wal_senders · b3055ab4
      Magnus Hagander authored
      Should be limited to the maximum number of connections excluding
      autovacuum workers, not including.
      
      Add similar check for max_wal_senders, which should never be higher than
      max_connections.
      b3055ab4
  8. 09 Aug, 2012 1 commit