[pgpool-hackers: 3704] Re: SSL memory leak
Bo Peng
pengbo at sraoss.co.jp
Tue Jul 7 13:52:49 JST 2020
Ishii-san,
I have fixed this memory leak.
https://git.postgresql.org/gitweb/?p=pgpool2.git;a=commit;h=0fdbbb3698ab91640917e19c887e78d572c725cf
On Mon, 29 Jun 2020 09:05:47 +0900
Bo Peng <pengbo at sraoss.co.jp> wrote:
> Hi Ishii-san,
>
> On Sat, 27 Jun 2020 21:29:34 +0900 (JST)
> Tatsuo Ishii <ishii at sraoss.co.jp> wrote:
>
> > I have run Coverity against master branch head. There are some memory
> > leak errors in src/utils/pool_ssl.c.
> >
> > > *** CID 1429988: (RESOURCE_LEAK)
> > > /src/utils/pool_ssl.c: 360 in init_ssl_ctx()
> > > 354
> > > 355 if (cacert || cacert_dir)
> > > 356 {
> > > 357 error = SSL_CTX_load_verify_locations(cp->ssl_ctx,
> > > 358 cacert,
> > > 359 cacert_dir);
> > >>>> CID 1429988: (RESOURCE_LEAK)
> > >>>> Variable "conf_file_copy" going out of scope leaks the storage it points to.
> > > 360 SSL_RETURN_ERROR_IF((error != 1), "SSL verification setup");
> > > 361 SSL_CTX_set_verify(cp->ssl_ctx, SSL_VERIFY_PEER, NULL);
> > > 362 }
> > > 363 }
> >
> > This was introduced by this commit:
> > --------------------------------------------------
> > Mon, 18 May 2020 21:12:25 +0900 (21:12 +0900)
> > committer Bo Peng <pengbo at sraoss.co.jp>
> > commit fc9e9d3733a9c2c14c10bb3af25217f386ee41c7
> >
> > Change relative path of SSL files to configuration directory.
> >
> > Patch is created by Umar Hayat and Japanese documentation is added by me.
> > --------------------------------------------------
> >
> > Macro SSL_RETURN_ERROR_IF is actually:
> >
> > #define SSL_RETURN_ERROR_IF(cond, msg) \
> > do { \
> > if ( (cond) ) { \
> > perror_ssl( (msg) ); \
> > return -1; \
> > } \
> > } while (0);
> >
> > The leaking storage is this:
> >
> > char *conf_file_copy = pstrdup(get_config_file_name());
> >
> > When SSL_RETURN_ERROR_IF is called, conf_file_copy is not freed, which
> > is what Coverity is complaining. Quick and dirty fix would be
> > something like:
> >
> > #define SSL_RETURN_ERROR_IF(cond, msg) \
> > do { \
> > if ( (cond) ) { \
> > perror_ssl( (msg) ); \
> > pfree(conf_file_copy); \
> > return -1; \
> > } \
> > } while (0);
> >
> > Peng, What do you think?
>
> I will look into this one.
>
> > Best regards,
> > --
> > Tatsuo Ishii
> > SRA OSS, Inc. Japan
> > English: http://www.sraoss.co.jp/index_en.php
> > Japanese:http://www.sraoss.co.jp
> > _______________________________________________
> > pgpool-hackers mailing list
> > pgpool-hackers at pgpool.net
> > http://www.pgpool.net/mailman/listinfo/pgpool-hackers
>
>
> --
> Bo Peng <pengbo at sraoss.co.jp>
> SRA OSS, Inc. Japan
> _______________________________________________
> pgpool-hackers mailing list
> pgpool-hackers at pgpool.net
> http://www.pgpool.net/mailman/listinfo/pgpool-hackers
--
Bo Peng <pengbo at sraoss.co.jp>
SRA OSS, Inc. Japan
More information about the pgpool-hackers
mailing list