mirror of
https://github.com/postgres/postgres.git
synced 2026-05-28 04:35:45 -04:00
Fix old bug in contrib/sslinfo: X509_NAME_to_text freed the BIO_s_mem buffer
it was using too soon. In a situation where pg_do_encoding_conversion is a no-op, this led to garbage data returned. In HEAD, also modify the code that's ensuring null termination to make it a tad more obvious what's happening.
This commit is contained in:
parent
d0d2d74ce7
commit
af9b481653
1 changed files with 2 additions and 7 deletions
|
|
@ -4,7 +4,7 @@
|
|||
* Written by Victor B. Wagner <vitus@cryptocom.ru>, Cryptocom LTD
|
||||
* This file is distributed under BSD-style license.
|
||||
*
|
||||
* $PostgreSQL: pgsql/contrib/sslinfo/sslinfo.c,v 1.6 2007/02/27 23:48:06 tgl Exp $
|
||||
* $PostgreSQL: pgsql/contrib/sslinfo/sslinfo.c,v 1.6.2.1 2008/11/10 14:57:46 tgl Exp $
|
||||
*/
|
||||
|
||||
#include "postgres.h"
|
||||
|
|
@ -312,19 +312,14 @@ X509_NAME_to_text(X509_NAME *name)
|
|||
size - 1,
|
||||
PG_UTF8,
|
||||
GetDatabaseEncoding());
|
||||
BIO_free(membuf);
|
||||
|
||||
outlen = strlen(dp);
|
||||
result = palloc(VARHDRSZ + outlen);
|
||||
memcpy(VARDATA(result), dp, outlen);
|
||||
SET_VARSIZE(result, VARHDRSZ + outlen);
|
||||
|
||||
/*
|
||||
* pg_do_encoding_conversion has annoying habit of returning source
|
||||
* pointer
|
||||
*/
|
||||
if (dp != sp)
|
||||
pfree(dp);
|
||||
BIO_free(membuf);
|
||||
|
||||
PG_RETURN_TEXT_P(result);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue