php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #77207 openssl_pkey_get_private didn't free memory
Submitted: 2018-11-27 09:53 UTC Modified: -
From: sagaxu at qq dot com Assigned:
Status: Open Package: OpenSSL related
PHP Version: Irrelevant OS:
Private report: No CVE-ID: None
View Add Comment Developer Edit
Welcome! If you don't have a Git account, you can't do anything here.
You can add a comment by following this link or if you reported this bug, you can edit this bug over here.
(description)
Block user comment
Status: Assign to:
Package:
Bug Type:
Summary:
From: sagaxu at qq dot com
New email:
PHP Version: OS:

 

 [2018-11-27 09:53 UTC] sagaxu at qq dot com
Description:
------------
$ php -v
PHP 7.2.11-3build2 (cli) (built: Nov 26 2018 13:08:29) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.2.11-3build2, Copyright (c) 1999-2018, by Zend Technologies
    with Xdebug v2.6.1, Copyright (c) 2002-2018, by Derick Rethans


PHP 7.1.X and 7.2.X both affected.

Test script:
---------------
<?php

error_reporting(E_ALL);
ini_set('display_errors', 'stderr');


$pk = '-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAokB9srofHWSRuv0x679iYftvS0WBrTS0FvK/yzpdAodcNm5S
SQ8YJqRv5o/YE/i+d49zMM92/Q7hTVnuaEpmYzsX34PvOKYW7LEuTYpa/QRQvcUJ
p/vZ9sR3s7c/FoWrdzIl7kx/WYF53gEvQuHM/qbmRczZ6mdtGN01cYYPVm+oQaPQ
E6r3aQzf+R4XkMFTfbT9iz8NWnPuo+GmGsVqGV1e8tALzybeWqQAwzf5g5sLIGb8
MXPx0dipM98hkw3XKO+sVwxYY5vVnskq05Jw74zZkr9k9vWZC7S80YJkrIzzZaJ4
yPtAdKCS1Nk+nnqVKA4POIZN2cEmO7lrUfb3TwIDAQABAoIBAH1krABpuUxFAh9q
OJ+CfG1PHXcl049h0OB/YNyWUXV32TszzaIq6TZMFTMx7gOZVNIf6h1J6SKv0k2u
eALfpPuBmvSiCUpVihgI4skIaUNrh17yHYFWsd/1fLFGqJomWhq3hfsB4dXxq5Z4
gecFjSEtKX++TpfKsNTreLcwrT/Vte1XLV3U10fLBZfTU26BQYQsgIBgCm96UsIu
izJSv1fplenHRJM08WpLlx07g6Kk17b0qpD+VGFbCCRaO3YtLlHBB60kRQloqSDH
sdycQAI6CZjtYL7x/6LwjH7n4U1haMMcCqDZdsemyz2Lnum4zkMgb4lxWHGu9kbE
MtVJO1kCgYEA1ZKygrVHIi7PmLusxZEobqPNa7lBUaM5CORbSspjeC3AwPKDuhGK
QU4DUFsrFWxxDcI5W3YBduWaYFAQlhaSeKDeJePCgkteXkFHAMd2Li8ogBse+MIF
YynSXzxzmSRLeP4fUCZb03aNENSCnArh7G0vOLFfRkn3x+z0wxY5dDsCgYEAwnvY
4YC6fWymfl/Fw0SsE0TBHg9joXxiCuPsz/miYpmEyBPAZtsD/3o2REnu36ROOQ0a
lIw8EAtQzS/K7UbPpMsAhSFaFyBLFIEP3GZxJB/iaXmIQ6s+JXNqGqoyy+PJiWII
zFj9aLX47WPruOKJip8MLCzdzVMloF63q11Yu/0CgYEAy0nISuwcGmhuR9YT/TZP
Qwj9phT/HKL9zf32+7ird6AtQjtUsU6yx7hnJRyyZMEE13DRQcKQYEjqadSsBQDV
SKbu7SffZEAzQgpmeFJjplBS/6VRFL0xfZM4YFhdPB61DCTvT05Dx4OngKaW78rY
A0BmW1NR+ci8Znug+vTzmTMCgYAaHUciAIcKEGzKy1FixvXUIIdN4gMey/TeQXyq
8Ho9gx+xPfW32fDPfTmMMeFBZm6aeof3Kl1mSh6vbptxAPEgz6FiPvg54rwyJKJc
leTbVOyx/P+vFm9h1/2HVxM7DXsiV2eXCNv+E3E5bxFX4hNV6cVYqS2fRGro/c7r
07z2gQKBgQCtukjBH1l/zHyV3acr5zXhY416wvEMh3zfYWQYYwoUACOaUTlO4Fqz
EsmRtC76Nc3zpLz3/dhMn9ywz7+HJqZs7hNTvU2vxEBAaCFYyzljaJA1EjIKQAdr
jUfQ5aNvrj5lVBJ+iHbV5O/ktFHLcM8eVurZpDirshS2DFMkcrcLHg==
-----END RSA PRIVATE KEY-----';

for ($i=0; $i<10; $i++) {
    for ($j=0; $j<10000; $j++) {
        $key = openssl_pkey_get_private($pk);
        openssl_pkey_free($key);
    }
    echo memory_get_usage() . "\n";
}



Expected result:
----------------
223840
223880
223880
223880
223880
223880
223880
223880
223880
223880


Actual result:
--------------
1167336
1931656
2171656
3460256
3700256
3940256
6277408
6517408
6757408
6997408

Patches

Add a Patch

Pull Requests

Add a Pull Request

 
PHP Copyright © 2001-2018 The PHP Group
All rights reserved.
Last updated: Wed Dec 19 03:01:26 2018 UTC