diff --git a/src/backend/utils/cache/relcache.c b/src/backend/utils/cache/relcache.c index bb88ab5eef..3cb6d145b4 100644 --- a/src/backend/utils/cache/relcache.c +++ b/src/backend/utils/cache/relcache.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/cache/relcache.c,v 1.296 2010/01/05 01:06:56 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/utils/cache/relcache.c,v 1.297 2010/01/07 20:39:45 rhaas Exp $ * *------------------------------------------------------------------------- */ @@ -404,7 +404,12 @@ RelationParseRelOptions(Relation relation, HeapTuple tuple) relation->rd_rel->relkind == RELKIND_INDEX ? relation->rd_am->amoptions : InvalidOid); - /* Copy parsed data into CacheMemoryContext */ + /* + * Copy parsed data into CacheMemoryContext. To guard against the + * possibility of leaks in the reloptions code, we want to do the actual + * parsing in the caller's memory context and copy the results into + * CacheMemoryContext after the fact. + */ if (options) { relation->rd_options = MemoryContextAlloc(CacheMemoryContext,