~ubuntu-branches/ubuntu/utopic/postgresql-9.4/utopic-security

« back to all changes in this revision

Viewing changes to src/backend/commands/async.c

  • Committer: Package Import Robot
  • Author(s): Martin Pitt, CVE-2014-8161
  • Date: 2015-02-06 12:31:46 UTC
  • mfrom: (1.1.5) (7.1.2 utopic-proposed)
  • Revision ID: package-import@ubuntu.com-20150206123146-vtmf30jbkm7w16p8
Tags: 9.4.1-0ubuntu0.14.10
* New upstream security/bug fix release (LP: #1418928)
  - Fix buffer overruns in to_char() [CVE-2015-0241]
  - Fix buffer overruns in contrib/pgcrypto [CVE-2015-0243]
  - Fix possible loss of frontend/backend protocol synchronization after an
    error [CVE-2015-0244]
  - Fix information leak via constraint-violation error messages
    [CVE-2014-8161]
  - See release notes for details about other fixes:
    http://www.postgresql.org/about/news/1569/

Show diffs side-by-side

added added

removed removed

Lines of Context:
369
369
static bool IsListeningOn(const char *channel);
370
370
static void asyncQueueUnregister(void);
371
371
static bool asyncQueueIsFull(void);
372
 
static bool asyncQueueAdvance(QueuePosition *position, int entryLength);
 
372
static bool asyncQueueAdvance(volatile QueuePosition *position, int entryLength);
373
373
static void asyncQueueNotificationToEntry(Notification *n, AsyncQueueEntry *qe);
374
374
static ListCell *asyncQueueAddEntries(ListCell *nextNotify);
375
375
static void asyncQueueFillWarning(void);
376
376
static bool SignalBackends(void);
377
377
static void asyncQueueReadAllNotifications(void);
378
 
static bool asyncQueueProcessPageEntries(QueuePosition *current,
 
378
static bool asyncQueueProcessPageEntries(volatile QueuePosition *current,
379
379
                                                         QueuePosition stop,
380
380
                                                         char *page_buffer);
381
381
static void asyncQueueAdvanceTail(void);
1202
1202
 * returns true, else false.
1203
1203
 */
1204
1204
static bool
1205
 
asyncQueueAdvance(QueuePosition *position, int entryLength)
 
1205
asyncQueueAdvance(volatile QueuePosition *position, int entryLength)
1206
1206
{
1207
1207
        int                     pageno = QUEUE_POS_PAGE(*position);
1208
1208
        int                     offset = QUEUE_POS_OFFSET(*position);
1792
1792
static void
1793
1793
asyncQueueReadAllNotifications(void)
1794
1794
{
1795
 
        QueuePosition pos;
 
1795
        volatile QueuePosition pos;
1796
1796
        QueuePosition oldpos;
1797
1797
        QueuePosition head;
1798
1798
        bool            advanceTail;
1952
1952
 * The QueuePosition *current is advanced past all processed messages.
1953
1953
 */
1954
1954
static bool
1955
 
asyncQueueProcessPageEntries(QueuePosition *current,
 
1955
asyncQueueProcessPageEntries(volatile QueuePosition *current,
1956
1956
                                                         QueuePosition stop,
1957
1957
                                                         char *page_buffer)
1958
1958
{