@@ -1113,6 +1113,10 @@ server_new(
11131113 ret -> secondariescnt = 0 ;
11141114 ret -> ip = strdup (ip );
11151115 if (ret -> ip == NULL ) {
1116+ if (ret -> mtlspemcert != NULL )
1117+ free (ret -> mtlspemcert );
1118+ if (ret -> mtlspemkey != NULL )
1119+ free (ret -> mtlspemkey );
11161120 free (ret );
11171121 return NULL ;
11181122 }
@@ -1123,12 +1127,20 @@ server_new(
11231127 ret -> sockbufsize = sockbufsize ;
11241128 ret -> maxstalls = maxstalls ;
11251129 if ((ret -> batch = malloc (sizeof (char * ) * (bsize + 1 ))) == NULL ) {
1130+ if (ret -> mtlspemcert != NULL )
1131+ free (ret -> mtlspemcert );
1132+ if (ret -> mtlspemkey != NULL )
1133+ free (ret -> mtlspemkey );
11261134 free ((char * )ret -> ip );
11271135 free (ret );
11281136 return NULL ;
11291137 }
11301138 ret -> fd = -1 ;
11311139 if ((ret -> strm = malloc (sizeof (z_strm ))) == NULL ) {
1140+ if (ret -> mtlspemcert != NULL )
1141+ free (ret -> mtlspemcert );
1142+ if (ret -> mtlspemkey != NULL )
1143+ free (ret -> mtlspemkey );
11321144 free ((char * )ret -> ip );
11331145 free (ret -> batch );
11341146 free (ret );
@@ -1152,8 +1164,13 @@ server_new(
11521164 char * err = ERR_error_string (ERR_get_error (), NULL );
11531165 logerr ("failed to load SSL verify locations from %s for "
11541166 "%s:%d: %s\n" , sslCA , ret -> ip , ret -> port , err );
1167+ if (ret -> mtlspemcert != NULL )
1168+ free (ret -> mtlspemcert );
1169+ if (ret -> mtlspemkey != NULL )
1170+ free (ret -> mtlspemkey );
11551171 free ((char * )ret -> ip );
11561172 free (ret -> batch );
1173+ SSL_CTX_free (ret -> strm -> ctx );
11571174 free (ret -> strm );
11581175 free (ret );
11591176 return NULL ;
@@ -1182,6 +1199,10 @@ server_new(
11821199 else if ((transport & 0xFFFF ) == W_GZIP ) {
11831200 z_strm * gzstrm = malloc (sizeof (z_strm ));
11841201 if (gzstrm == NULL ) {
1202+ if (ret -> mtlspemcert != NULL )
1203+ free (ret -> mtlspemcert );
1204+ if (ret -> mtlspemkey != NULL )
1205+ free (ret -> mtlspemkey );
11851206 free ((char * )ret -> ip );
11861207 free (ret -> batch );
11871208 free (ret -> strm );
@@ -1200,6 +1221,10 @@ server_new(
12001221 else if ((transport & 0xFFFF ) == W_LZ4 ) {
12011222 z_strm * lzstrm = malloc (sizeof (z_strm ));
12021223 if (lzstrm == NULL ) {
1224+ if (ret -> mtlspemcert != NULL )
1225+ free (ret -> mtlspemcert );
1226+ if (ret -> mtlspemkey != NULL )
1227+ free (ret -> mtlspemkey );
12031228 free ((char * )ret -> ip );
12041229 free (ret -> batch );
12051230 free (ret -> strm );
@@ -1218,6 +1243,10 @@ server_new(
12181243 else if ((transport & 0xFFFF ) == W_SNAPPY ) {
12191244 z_strm * snpstrm = malloc (sizeof (z_strm ));
12201245 if (snpstrm == NULL ) {
1246+ if (ret -> mtlspemcert != NULL )
1247+ free (ret -> mtlspemcert );
1248+ if (ret -> mtlspemkey != NULL )
1249+ free (ret -> mtlspemkey );
12211250 free ((char * )ret -> ip );
12221251 free (ret -> batch );
12231252 free (ret -> strm );
@@ -1242,6 +1271,15 @@ server_new(
12421271 }
12431272 ret -> queue = queue_new (qsize );
12441273 if (ret -> queue == NULL ) {
1274+ if (ret -> mtlspemcert != NULL )
1275+ free (ret -> mtlspemcert );
1276+ if (ret -> mtlspemkey != NULL )
1277+ free (ret -> mtlspemkey );
1278+ if (ret -> strm -> ctx != NULL )
1279+ SSL_CTX_free (ret -> strm -> ctx );
1280+ if (ret -> strm -> nextstrm != NULL )
1281+ free (ret -> strm -> nextstrm );
1282+ free (ret -> strm );
12451283 free (ret -> batch );
12461284 free ((char * )ret -> ip );
12471285 free (ret );
0 commit comments