~ubuntu-branches/ubuntu/raring/postgresql-8.4/raring

« back to all changes in this revision

Viewing changes to src/bin/pg_dump/pg_backup_archiver.c

  • Committer: Bazaar Package Importer
  • Author(s): Martin Pitt
  • Date: 2011-02-01 17:14:21 UTC
  • mfrom: (13.1.4 sid)
  • Revision ID: james.westby@ubuntu.com-20110201171421-gh0ncmnjr3mggdjd
Tags: 8.4.7-1
* New upstream security/bug fix release:
  - Fix buffer overrun in "contrib/intarray"'s input function for the
    query_int type.
    This bug is a security risk since the function's return address
    could be overwritten. Thanks to Apple Inc's security team for
    reporting this issue and supplying the fix. (CVE-2010-4015)
  - Avoid failures when "EXPLAIN" tries to display a simple-form CASE
    expression.
    If the CASE's test expression was a constant, the planner could
    simplify the CASE into a form that confused the expression-display
    code, resulting in "unexpected CASE WHEN clause" errors.
  - Fix assignment to an array slice that is before the existing range
    of subscripts.
    If there was a gap between the newly added subscripts and the first
    pre-existing subscript, the code miscalculated how many entries
    needed to be copied from the old array's null bitmap, potentially
    leading to data corruption or crash.
  - Avoid unexpected conversion overflow in planner for very distant
    date values.
    The date type supports a wider range of dates than can be
    represented by the timestamp types, but the planner assumed it
    could always convert a date to timestamp with impunity.
  - Fix pg_restore's text output for large objects (BLOBs) when
    standard_conforming_strings is on.
    Although restoring directly to a database worked correctly, string
    escaping was incorrect if pg_restore was asked for SQL text output
    and standard_conforming_strings had been enabled in the source
    database.
  - Fix erroneous parsing of tsquery values containing ... &
    !(subexpression) | ... .
    Queries containing this combination of operators were not executed
    correctly. The same error existed in "contrib/intarray"'s query_int
    type and "contrib/ltree"'s ltxtquery type.
  - Fix bug in "contrib/seg"'s GiST picksplit algorithm.
    This could result in considerable inefficiency, though not actually
    incorrect answers, in a GiST index on a seg column. If you have
    such an index, consider "REINDEX"ing it after installing this
    update. (This is identical to the bug that was fixed in
    "contrib/cube" in the previous update.)

Show diffs side-by-side

added added

removed removed

Lines of Context:
1252
1252
        }
1253
1253
        else
1254
1254
        {
1255
 
                unsigned char *str;
1256
 
                size_t          len;
 
1255
                PQExpBuffer buf = createPQExpBuffer();
1257
1256
 
1258
 
                str = PQescapeBytea((const unsigned char *) AH->lo_buf,
1259
 
                                                        AH->lo_buf_used, &len);
1260
 
                if (!str)
1261
 
                        die_horribly(AH, modulename, "out of memory\n");
 
1257
                appendByteaLiteralAHX(buf,
 
1258
                                                          (const unsigned char *) AH->lo_buf,
 
1259
                                                          AH->lo_buf_used,
 
1260
                                                          AH);
1262
1261
 
1263
1262
                /* Hack: turn off writingBlob so ahwrite doesn't recurse to here */
1264
1263
                AH->writingBlob = 0;
1265
 
                ahprintf(AH, "SELECT lowrite(0, '%s');\n", str);
 
1264
                ahprintf(AH, "SELECT pg_catalog.lowrite(0, %s);\n", buf->data);
1266
1265
                AH->writingBlob = 1;
1267
1266
 
1268
 
                free(str);
 
1267
                destroyPQExpBuffer(buf);
1269
1268
        }
1270
1269
        AH->lo_buf_used = 0;
1271
1270
}