~ubuntu-branches/ubuntu/oneiric/postgresql-9.1/oneiric-security

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML
><HEAD
><TITLE
>Release 7.4.8</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
REV="MADE"
HREF="mailto:pgsql-docs@postgresql.org"><LINK
REL="HOME"
TITLE="PostgreSQL 9.1.8 Documentation"
HREF="index.html"><LINK
REL="UP"
TITLE="Release Notes"
HREF="release.html"><LINK
REL="PREVIOUS"
TITLE="Release 7.4.9"
HREF="release-7-4-9.html"><LINK
REL="NEXT"
TITLE="Release 7.4.7"
HREF="release-7-4-7.html"><LINK
REL="STYLESHEET"
TYPE="text/css"
HREF="stylesheet.css"><META
HTTP-EQUIV="Content-Type"
CONTENT="text/html; charset=ISO-8859-1"><META
NAME="creation"
CONTENT="2013-02-04T21:38:53"></HEAD
><BODY
CLASS="SECT1"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="5"
ALIGN="center"
VALIGN="bottom"
><A
HREF="index.html"
>PostgreSQL 9.1.8 Documentation</A
></TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="top"
><A
TITLE="Release 7.4.9"
HREF="release-7-4-9.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="top"
><A
HREF="release.html"
ACCESSKEY="U"
>Up</A
></TD
><TD
WIDTH="60%"
ALIGN="center"
VALIGN="bottom"
>Appendix E. Release Notes</TD
><TD
WIDTH="20%"
ALIGN="right"
VALIGN="top"
><A
TITLE="Release 7.4.7"
HREF="release-7-4-7.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="RELEASE-7-4-8"
>E.161. Release 7.4.8</A
></H1
><DIV
CLASS="NOTE"
><BLOCKQUOTE
CLASS="NOTE"
><P
><B
>Release Date: </B
>2005-05-09</P
></BLOCKQUOTE
></DIV
><P
>   This release contains a variety of fixes from 7.4.7, including several
   security-related issues.
   For information about new features in the 7.4 major release, see
   <A
HREF="release-7-4.html"
>Section E.169</A
>.
  </P
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN128020"
>E.161.1. Migration to Version 7.4.8</A
></H2
><P
>    A dump/restore is not required for those running 7.4.X.  However,
    it is one possible way of handling two significant security problems
    that have been found in the initial contents of 7.4.X system
    catalogs.  A dump/initdb/reload sequence using 7.4.8's initdb will
    automatically correct these problems.
   </P
><P
>    The larger security problem is that the built-in character set encoding
    conversion functions can be invoked from SQL commands by unprivileged
    users, but the functions were not designed for such use and are not
    secure against malicious choices of arguments.  The fix involves changing
    the declared parameter list of these functions so that they can no longer
    be invoked from SQL commands.  (This does not affect their normal use
    by the encoding conversion machinery.)
   </P
><P
>    The lesser problem is that the <TT
CLASS="FILENAME"
>contrib/tsearch2</TT
> module
    creates several functions that are misdeclared to return
    <TT
CLASS="TYPE"
>internal</TT
> when they do not accept <TT
CLASS="TYPE"
>internal</TT
> arguments.
    This breaks type safety for all functions using <TT
CLASS="TYPE"
>internal</TT
>
    arguments.
   </P
><P
>    It is strongly recommended that all installations repair these errors,
    either by initdb or by following the manual repair procedures given
    below.  The errors at least allow unprivileged database users to crash
    their server process, and might allow unprivileged users to gain the
    privileges of a database superuser.
   </P
><P
>    If you wish not to do an initdb, perform the following procedures instead.
    As the database superuser, do:

</P><PRE
CLASS="PROGRAMLISTING"
>BEGIN;
UPDATE pg_proc SET proargtypes[3] = 'internal'::regtype
WHERE pronamespace = 11 AND pronargs = 5
     AND proargtypes[2] = 'cstring'::regtype;
-- The command should report having updated 90 rows;
-- if not, rollback and investigate instead of committing!
COMMIT;</PRE
><P>

    Next, if you have installed <TT
CLASS="FILENAME"
>contrib/tsearch2</TT
>, do:

</P><PRE
CLASS="PROGRAMLISTING"
>BEGIN;
UPDATE pg_proc SET proargtypes[0] = 'internal'::regtype
WHERE oid IN (
   'dex_init(text)'::regprocedure,
   'snb_en_init(text)'::regprocedure,
   'snb_ru_init(text)'::regprocedure,
   'spell_init(text)'::regprocedure,
   'syn_init(text)'::regprocedure
);
-- The command should report having updated 5 rows;
-- if not, rollback and investigate instead of committing!
COMMIT;</PRE
><P>

    If this command fails with a message like <SPAN
CLASS="QUOTE"
>"function
    "dex_init(text)" does not exist"</SPAN
>, then either <TT
CLASS="FILENAME"
>tsearch2</TT
>
    is not installed in this database, or you already did the update.
   </P
><P
>    The above procedures must be carried out in <SPAN
CLASS="emphasis"
><I
CLASS="EMPHASIS"
>each</I
></SPAN
> database
    of an installation, including <TT
CLASS="LITERAL"
>template1</TT
>, and ideally
    including <TT
CLASS="LITERAL"
>template0</TT
> as well.  If you do not fix the
    template databases then any subsequently created databases will contain
    the same errors.  <TT
CLASS="LITERAL"
>template1</TT
> can be fixed in the same way
    as any other database, but fixing <TT
CLASS="LITERAL"
>template0</TT
> requires
    additional steps.  First, from any database issue:
</P><PRE
CLASS="PROGRAMLISTING"
>UPDATE pg_database SET datallowconn = true WHERE datname = 'template0';</PRE
><P>
     Next connect to <TT
CLASS="LITERAL"
>template0</TT
> and perform the above repair
     procedures.  Finally, do:
</P><PRE
CLASS="PROGRAMLISTING"
>-- re-freeze template0:
VACUUM FREEZE;
-- and protect it against future alterations:
UPDATE pg_database SET datallowconn = false WHERE datname = 'template0';</PRE
><P>
   </P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN128045"
>E.161.2. Changes</A
></H2
><P
></P
><UL
><LI
><P
>Change encoding function signature to prevent
misuse</P
></LI
><LI
><P
>Change <TT
CLASS="FILENAME"
>contrib/tsearch2</TT
> to avoid unsafe use of
<TT
CLASS="TYPE"
>INTERNAL</TT
> function results</P
></LI
><LI
><P
>Repair ancient race condition that allowed a transaction to be
seen as committed for some purposes (eg SELECT FOR UPDATE) slightly sooner
than for other purposes</P
><P
>This is an extremely serious bug since it could lead to apparent
data inconsistencies being briefly visible to applications.</P
></LI
><LI
><P
>Repair race condition between relation extension and
VACUUM</P
><P
>This could theoretically have caused loss of a page's worth of
freshly-inserted data, although the scenario seems of very low probability.
There are no known cases of it having caused more than an Assert failure.</P
></LI
><LI
><P
>Fix comparisons of <TT
CLASS="TYPE"
>TIME WITH TIME ZONE</TT
> values</P
><P
>The comparison code was wrong in the case where the
<TT
CLASS="LITERAL"
>--enable-integer-datetimes</TT
> configuration switch had been used.
NOTE: if you have an index on a <TT
CLASS="TYPE"
>TIME WITH TIME ZONE</TT
> column,
it will need to be <TT
CLASS="COMMAND"
>REINDEX</TT
>ed after installing this update, because
the fix corrects the sort order of column values.</P
></LI
><LI
><P
>Fix <CODE
CLASS="FUNCTION"
>EXTRACT(EPOCH)</CODE
> for
<TT
CLASS="TYPE"
>TIME WITH TIME ZONE</TT
> values</P
></LI
><LI
><P
>Fix mis-display of negative fractional seconds in
<TT
CLASS="TYPE"
>INTERVAL</TT
> values</P
><P
>This error only occurred when the
<TT
CLASS="LITERAL"
>--enable-integer-datetimes</TT
> configuration switch had been used.</P
></LI
><LI
><P
>Ensure operations done during backend shutdown are counted by
statistics collector</P
><P
>This is expected to resolve reports of <SPAN
CLASS="APPLICATION"
>pg_autovacuum</SPAN
>
not vacuuming the system catalogs often enough &mdash; it was not being
told about catalog deletions caused by temporary table removal during
backend exit.</P
></LI
><LI
><P
>Additional buffer overrun checks in plpgsql
(Neil)</P
></LI
><LI
><P
>Fix pg_dump to dump trigger names containing <TT
CLASS="LITERAL"
>%</TT
>
correctly (Neil)</P
></LI
><LI
><P
>Fix <TT
CLASS="FILENAME"
>contrib/pgcrypto</TT
> for newer OpenSSL builds
(Marko Kreen)</P
></LI
><LI
><P
>Still more 64-bit fixes for
<TT
CLASS="FILENAME"
>contrib/intagg</TT
></P
></LI
><LI
><P
>Prevent incorrect optimization of functions returning
<TT
CLASS="TYPE"
>RECORD</TT
></P
></LI
><LI
><P
>Prevent <CODE
CLASS="FUNCTION"
>to_char(interval)</CODE
> from dumping core for
month-related formats</P
></LI
><LI
><P
>Prevent crash on <TT
CLASS="LITERAL"
>COALESCE(NULL,NULL)</TT
></P
></LI
><LI
><P
>Fix <CODE
CLASS="FUNCTION"
>array_map</CODE
> to call PL functions correctly</P
></LI
><LI
><P
>Fix permission checking in <TT
CLASS="COMMAND"
>ALTER DATABASE RENAME</TT
></P
></LI
><LI
><P
>Fix <TT
CLASS="COMMAND"
>ALTER LANGUAGE RENAME</TT
></P
></LI
><LI
><P
>Make <CODE
CLASS="FUNCTION"
>RemoveFromWaitQueue</CODE
> clean up after itself</P
><P
>This fixes a lock management error that would only be visible if a transaction
was kicked out of a wait for a lock (typically by query cancel) and then the
holder of the lock released it within a very narrow window.</P
></LI
><LI
><P
>Fix problem with untyped parameter appearing in
<TT
CLASS="COMMAND"
>INSERT ... SELECT</TT
></P
></LI
><LI
><P
>Fix <TT
CLASS="COMMAND"
>CLUSTER</TT
> failure after
<TT
CLASS="COMMAND"
>ALTER TABLE SET WITHOUT OIDS</TT
></P
></LI
></UL
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="release-7-4-9.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="release-7-4-7.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Release 7.4.9</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="release.html"
ACCESSKEY="U"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Release 7.4.7</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>