1. 23 Feb, 2014 1 commit
  2. 22 Feb, 2014 1 commit
  3. 21 Feb, 2014 3 commits
    • Tom Lane's avatar
      Do ScalarArrayOp estimation correctly when array is a stable expression. · 77585bce
      Tom Lane authored
      Most estimation functions apply estimate_expression_value to see if they
      can reduce an expression to a constant; the key difference is that it
      allows evaluation of stable as well as immutable functions in hopes of
      ending up with a simple Const node.  scalararraysel didn't get the memo
      though, and neither did gincost_opexpr/gincost_scalararrayopexpr.  Fix
      that, and remove a now-unnecessary estimate_expression_value step in the
      subsidiary function scalararraysel_containment.
      
      Per complaint from Alexey Klyukin.  Back-patch to 9.3.  The problem
      goes back further, but I'm hesitant to change estimation behavior in
      long-stable release branches.
      77585bce
    • Heikki Linnakangas's avatar
      Avoid integer overflow in hstore_to_json(). · 0c5783ff
      Heikki Linnakangas authored
      The length of the output buffer was calculated based on the size of the
      argument hstore. On a sizeof(int) == 4 platform and a huge argument, it
      could overflow, causing a too small buffer to be allocated.
      
      Refactor the function to use a StringInfo instead of pre-allocating the
      buffer. Makes it shorter and more readable, too.
      0c5783ff
    • Peter Eisentraut's avatar
      doc: Clarify documentation page header customization code · 8c059dff
      Peter Eisentraut authored
      The customization overrode the fast-forward code with its custom Up
      link.  So this is no longer really the fast-forward feature, so we might
      as well turn that off and override the non-ff template instead, thus
      removing one mental indirection.
      
      Fix the wrong column span declaration.
      
      Clarify and update the documentation.
      8c059dff
  4. 20 Feb, 2014 3 commits
  5. 19 Feb, 2014 6 commits
    • Tom Lane's avatar
      Fix some missing .gitignore and "make clean" items in ecpg. · 52acfd27
      Tom Lane authored
      Some of the files we optionally link in from elsewhere weren't ignored
      and/or weren't cleaned up at "make clean".  Noted while testing on a
      machine that needs our version of snprintf.c.
      52acfd27
    • Robert Haas's avatar
      Document pg_replslot in storage.sgml. · 7b3cf9ba
      Robert Haas authored
      Per an observation from Amit Kapila.
      7b3cf9ba
    • Robert Haas's avatar
      Switch various builtin functions to use pg_lsn instead of text. · 6f289c2b
      Robert Haas authored
      The functions in slotfuncs.c don't exist in any released version,
      but the changes to xlogfuncs.c represent backward-incompatibilities.
      Per discussion, we're hoping that the queries using these functions
      are few enough and simple enough that this won't cause too much
      breakage for users.
      
      Michael Paquier, reviewed by Andres Freund and further modified
      by me.
      6f289c2b
    • Robert Haas's avatar
      Further code review for pg_lsn data type. · 694e3d13
      Robert Haas authored
      Change input function error messages to be more consistent with what is
      done elsewhere.  Remove a bunch of redundant type casts, so that the
      compiler will warn us if we screw up.  Don't pass LSNs by value on
      platforms where a Datum is only 32 bytes, per buildfarm.  Move macros
      for packing and unpacking LSNs to pg_lsn.h so that we can include
      access/xlogdefs.h, to avoid an unsatisfied dependency on XLogRecPtr.
      694e3d13
    • Robert Haas's avatar
      pg_lsn macro naming and type behavior revisions. · 844a28a9
      Robert Haas authored
      Change pg_lsn_mi so that it can return negative values when subtracting
      LSNs, and clean up some perhaps ill-considered macro names.
      844a28a9
    • Robert Haas's avatar
      Add a pg_lsn data type, to represent an LSN. · 7d03a83f
      Robert Haas authored
      Robert Haas and Michael Paquier
      7d03a83f
  6. 18 Feb, 2014 3 commits
    • Tom Lane's avatar
      Remove broken code that tried to handle OVERLAPS with a single argument. · a222f7fd
      Tom Lane authored
      The SQL standard says that OVERLAPS should have a two-element row
      constructor on each side.  The original coding of OVERLAPS support in
      our grammar attempted to extend that by allowing a single-element row
      constructor, which it internally duplicated ... or tried to, anyway.
      But that code has certainly not worked since our List infrastructure was
      rewritten in 2004, and I'm none too sure it worked before that.  As it
      stands, it ends up building a List that includes itself, leading to
      assorted undesirable behaviors later in the parser.
      
      Even if it worked as intended, it'd be a bit evil because of the
      possibility of duplicate evaluation of a volatile function that the user
      had written only once.  Given the lack of documentation, test cases, or
      complaints, let's just get rid of the idea and only support the standard
      syntax.
      
      While we're at it, improve the error cursor positioning for the
      wrong-number-of-arguments errors, and inline the makeOverlaps() function
      since it's only called in one place anyway.
      
      Per bug #9227 from Joshua Yanovski.  Initial patch by Joshua Yanovski,
      extended a bit by me.
      a222f7fd
    • Magnus Hagander's avatar
      Disable RandomizedBaseAddress on MSVC builds · 7f3e17b4
      Magnus Hagander authored
      The ASLR in Windows 8/Windows 2012 can break PostgreSQL's shared memory. It
      doesn't fail every time (which is explained by the Random part in ASLR), but
      can fail with errors abut failing to reserve shared memory region.
      
      MauMau, reviewed by Craig Ringer
      7f3e17b4
    • Heikki Linnakangas's avatar
  7. 17 Feb, 2014 14 commits
    • Tom Lane's avatar
      Last-minute updates for release notes. · 7b1fab3f
      Tom Lane authored
      Add entries for security issues.
      
      Security: CVE-2014-0060 through CVE-2014-0067
      7b1fab3f
    • Robert Haas's avatar
      Fix capitalization in README. · 876f78d5
      Robert Haas authored
      Vik Fearing
      876f78d5
    • Tom Lane's avatar
      Improve documentation about multixact IDs. · e7f40975
      Tom Lane authored
      Per gripe from Josh Berkus.
      e7f40975
    • Tom Lane's avatar
      Document risks of "make check" in the regression testing instructions. · 6ef32542
      Tom Lane authored
      Since the temporary server started by "make check" uses "trust"
      authentication, another user on the same machine could connect to it
      as database superuser, and then potentially exploit the privileges of
      the operating-system user who started the tests.  We should change
      the testing procedures to prevent this risk; but discussion is required
      about the best way to do that, as well as more testing than is practical
      for an undisclosed security problem.  Besides, the same issue probably
      affects some user-written test harnesses.  So for the moment, we'll just
      warn people against using "make check" when there are untrusted users on
      the same machine.
      
      In passing, remove some ancient advice that suggested making the
      regression testing subtree world-writable if you'd built as root.
      That looks dangerously insecure in modern contexts, and anyway we
      should not be encouraging people to build Postgres as root.
      
      Security: CVE-2014-0067
      6ef32542
    • Tom Lane's avatar
      Prevent potential overruns of fixed-size buffers. · 01824385
      Tom Lane authored
      Coverity identified a number of places in which it couldn't prove that a
      string being copied into a fixed-size buffer would fit.  We believe that
      most, perhaps all of these are in fact safe, or are copying data that is
      coming from a trusted source so that any overrun is not really a security
      issue.  Nonetheless it seems prudent to forestall any risk by using
      strlcpy() and similar functions.
      
      Fixes by Peter Eisentraut and Jozef Mlich based on Coverity reports.
      
      In addition, fix a potential null-pointer-dereference crash in
      contrib/chkpass.  The crypt(3) function is defined to return NULL on
      failure, but chkpass.c didn't check for that before using the result.
      The main practical case in which this could be an issue is if libc is
      configured to refuse to execute unapproved hashing algorithms (e.g.,
      "FIPS mode").  This ideally should've been a separate commit, but
      since it touches code adjacent to one of the buffer overrun changes,
      I included it in this commit to avoid last-minute merge issues.
      This issue was reported by Honza Horak.
      
      Security: CVE-2014-0065 for buffer overruns, CVE-2014-0066 for crypt()
      01824385
    • Noah Misch's avatar
      Predict integer overflow to avoid buffer overruns. · 31400a67
      Noah Misch authored
      Several functions, mostly type input functions, calculated an allocation
      size such that the calculation wrapped to a small positive value when
      arguments implied a sufficiently-large requirement.  Writes past the end
      of the inadvertent small allocation followed shortly thereafter.
      Coverity identified the path_in() vulnerability; code inspection led to
      the rest.  In passing, add check_stack_depth() to prevent stack overflow
      in related functions.
      
      Back-patch to 8.4 (all supported versions).  The non-comment hstore
      changes touch code that did not exist in 8.4, so that part stops at 9.0.
      
      Noah Misch and Heikki Linnakangas, reviewed by Tom Lane.
      
      Security: CVE-2014-0064
      31400a67
    • Noah Misch's avatar
      Fix handling of wide datetime input/output. · 4318daec
      Noah Misch authored
      Many server functions use the MAXDATELEN constant to size a buffer for
      parsing or displaying a datetime value.  It was much too small for the
      longest possible interval output and slightly too small for certain
      valid timestamp input, particularly input with a long timezone name.
      The long input was rejected needlessly; the long output caused
      interval_out() to overrun its buffer.  ECPG's pgtypes library has a copy
      of the vulnerable functions, which bore the same vulnerabilities along
      with some of its own.  In contrast to the server, certain long inputs
      caused stack overflow rather than failing cleanly.  Back-patch to 8.4
      (all supported versions).
      
      Reported by Daniel Schüssler, reviewed by Tom Lane.
      
      Security: CVE-2014-0063
      4318daec
    • Robert Haas's avatar
      Avoid repeated name lookups during table and index DDL. · 5f173040
      Robert Haas authored
      If the name lookups come to different conclusions due to concurrent
      activity, we might perform some parts of the DDL on a different table
      than other parts.  At least in the case of CREATE INDEX, this can be
      used to cause the permissions checks to be performed against a
      different table than the index creation, allowing for a privilege
      escalation attack.
      
      This changes the calling convention for DefineIndex, CreateTrigger,
      transformIndexStmt, transformAlterTableStmt, CheckIndexCompatible
      (in 9.2 and newer), and AlterTable (in 9.1 and older).  In addition,
      CheckRelationOwnership is removed in 9.2 and newer and the calling
      convention is changed in older branches.  A field has also been added
      to the Constraint node (FkConstraint in 8.4).  Third-party code calling
      these functions or using the Constraint node will require updating.
      
      Report by Andres Freund.  Patch by Robert Haas and Andres Freund,
      reviewed by Tom Lane.
      
      Security: CVE-2014-0062
      5f173040
    • Noah Misch's avatar
      Document security implications of check_function_bodies. · 540b4e5b
      Noah Misch authored
      Back-patch to 8.4 (all supported versions).
      540b4e5b
    • Noah Misch's avatar
      Prevent privilege escalation in explicit calls to PL validators. · 537cbd35
      Noah Misch authored
      The primary role of PL validators is to be called implicitly during
      CREATE FUNCTION, but they are also normal functions that a user can call
      explicitly.  Add a permissions check to each validator to ensure that a
      user cannot use explicit validator calls to achieve things he could not
      otherwise achieve.  Back-patch to 8.4 (all supported versions).
      Non-core procedural language extensions ought to make the same two-line
      change to their own validators.
      
      Andres Freund, reviewed by Tom Lane and Noah Misch.
      
      Security: CVE-2014-0061
      537cbd35
    • Noah Misch's avatar
      Shore up ADMIN OPTION restrictions. · fea164a7
      Noah Misch authored
      Granting a role without ADMIN OPTION is supposed to prevent the grantee
      from adding or removing members from the granted role.  Issuing SET ROLE
      before the GRANT bypassed that, because the role itself had an implicit
      right to add or remove members.  Plug that hole by recognizing that
      implicit right only when the session user matches the current role.
      Additionally, do not recognize it during a security-restricted operation
      or during execution of a SECURITY DEFINER function.  The restriction on
      SECURITY DEFINER is not security-critical.  However, it seems best for a
      user testing his own SECURITY DEFINER function to see the same behavior
      others will see.  Back-patch to 8.4 (all supported versions).
      
      The SQL standards do not conflate roles and users as PostgreSQL does;
      only SQL roles have members, and only SQL users initiate sessions.  An
      application using PostgreSQL users and roles as SQL users and roles will
      never attempt to grant membership in the role that is the session user,
      so the implicit right to add or remove members will never arise.
      
      The security impact was mostly that a role member could revoke access
      from others, contrary to the wishes of his own grantor.  Unapproved role
      member additions are less notable, because the member can still largely
      achieve that by creating a view or a SECURITY DEFINER function.
      
      Reviewed by Andres Freund and Tom Lane.  Reported, independently, by
      Jonas Sundman and Noah Misch.
      
      Security: CVE-2014-0060
      fea164a7
    • Tom Lane's avatar
      0983315b
    • Tom Lane's avatar
      PGDLLIMPORT-ify MainLWLockArray, ProcDiePending, proc_exit_inprogress. · fa1f0d78
      Tom Lane authored
      These are needed in HEAD to make assorted contrib modules build on Windows.
      Now that all the MSVC and Mingw buildfarm members seem to be on the same
      page about the need for them, we can have some confidence that future
      problems of this ilk will be detected promptly; there seems nothing more
      to be learned by delaying this fix further.
      
      I chose to mark QueryCancelPending as well, since it's easy to imagine code
      that wants to touch ProcDiePending also caring about QueryCancelPending.
      fa1f0d78
    • Tom Lane's avatar
      Fix unportable coding in tarCreateHeader(). · a1c80271
      Tom Lane authored
      uid_t and gid_t might be wider than int on some platforms.
      Per buildfarm member brolga.
      a1c80271
  8. 16 Feb, 2014 6 commits
    • Tom Lane's avatar
      Revert to using --enable-auto-import in Cygwin builds. · 8d6e2d4a
      Tom Lane authored
      Disabling auto-import requires that all libraries we use be careful about
      declspecs for exported variables; and it seems they aren't.  This means
      that Cygwin will not give us useful info about missing PGDLLIMPORT markers;
      but it's probably sufficient that MSVC and Mingw builds do.
      8d6e2d4a
    • Tom Lane's avatar
      Further wordsmithing on 9.3.3 release notes. · 734ff84b
      Tom Lane authored
      No substantive changes, but reorder some items and improve some
      descriptions.
      734ff84b
    • Tom Lane's avatar
      PGDLLIMPORT'ify DateStyle and IntervalStyle. · a5cf6068
      Tom Lane authored
      This is needed on Windows to support contrib/postgres_fdw.  Although it's
      been broken since last March, we didn't notice until recently because there
      were no active buildfarm members that complained about missing PGDLLIMPORT
      marking.  Efforts are underway to improve that situation, in support of
      which we're delaying fixing some other cases of global variables that
      should be marked PGDLLIMPORT.  However, this case affects 9.3, so we
      can't wait any longer to fix it.
      
      I chose to mark DateOrder as well, though it's not strictly necessary
      for postgres_fdw.
      a5cf6068
    • Tom Lane's avatar
      Improve release notes per comments from Andres Freund. · 8fd994e4
      Tom Lane authored
      Make a bit more noise about the timeout-interrupt bug.  Also, remove the
      release note entry for commit 423e1211; that patch fixed a problem
      introduced post-9.3.2, so there's no need to document it in the release
      notes.
      8fd994e4
    • Tom Lane's avatar
      On Windows, expect to find Tcl DLL in bin directory not lib directory. · 56caaf19
      Tom Lane authored
      Still another step in the continuing saga of trying to get
      --disable-auto-import to work.
      
      Hiroshi Inoue
      56caaf19
    • Tom Lane's avatar
      First-draft release notes for 9.3.3. · cefd3e50
      Tom Lane authored
      As usual, the release notes for older branches will be made by cutting
      these down, but put them up for community review first.
      cefd3e50
  9. 15 Feb, 2014 3 commits
    • Tom Lane's avatar
      Fix unportable coding in BackgroundWorkerStateChange(). · 643f75ca
      Tom Lane authored
      PIDs aren't necessarily ints; our usual practice for printing them
      is to explicitly cast to long.  Per buildfarm member rover_firefly.
      643f75ca
    • Tom Lane's avatar
      Fix unportable coding in DetermineSleepTime(). · f0ee42d5
      Tom Lane authored
      We should not assume that struct timeval.tv_sec is a long, because
      it ain't necessarily.  (POSIX says that it's a time_t, which might
      well be 64 bits now or in the future; or for that matter might be
      32 bits on machines with 64-bit longs.)  Per buildfarm member panther.
      
      Back-patch to 9.3 where the dubious coding was introduced.
      f0ee42d5
    • Tom Lane's avatar
      Centralize getopt-related declarations in a new header file pg_getopt.h. · 60ff2fdd
      Tom Lane authored
      We used to have externs for getopt() and its API variables scattered
      all over the place.  Now that we find we're going to need to tweak the
      variable declarations for Cygwin, it seems like a good idea to have
      just one place to tweak.
      
      In this commit, the variables are declared "#ifndef HAVE_GETOPT_H".
      That may or may not work everywhere, but we'll soon find out.
      
      Andres Freund
      60ff2fdd