Re: com php-src: Fix bug #55259 (openssl extension does not get the DH parameters from DH key resource): ext/openssl/openssl.c
ext/openssl/tests/bug55259.phpt

From: Date: Tue, 14 Jun 2016 08:56:47 +0000
Subject: Re: com php-src: Fix bug #55259 (openssl extension does not get the DH parameters from DH key resource): ext/openssl/openssl.c
ext/openssl/tests/bug55259.phpt
References: 1  Groups: php.cvs 
Request: Send a blank email to php-cvs+get-92379@lists.php.net to get a copy of this message
Hi Jakub, I just wanted to report that sometimes this test is failing. Rarely even, I would say, but I'm fairly sure it's not the first time I've seen it fail: https://revive.beccati.com/bamboo/browse/PHP-SRC-TESTS-828/test/case/26350125 Thoughts? Cheers On 25/08/2015 21:26, Jakub Zelenka wrote: > Commit: c39336d1d866866de629695fbd9971fb48f27ea9 > Author: Jakub Zelenka <bukka@php.net> Tue, 25 Aug 2015 20:26:11 +0100 > Parents: e5adf2b427915ff070ddcba24d7c4ed3014743e9 > Branches: PHP-5.6 > > Link: > http://git.php.net/?p=php-src.git;a=commitdiff;h=c39336d1d866866de629695fbd9971fb48f27ea9 > > Log: > Fix bug #55259 (openssl extension does not get the DH parameters from DH key resource) > > Bugs: > https://bugs.php.net/55259 > > Changed paths: > M ext/openssl/openssl.c > A ext/openssl/tests/bug55259.phpt > > > Diff: > diff --git a/ext/openssl/openssl.c b/ext/openssl/openssl.c > index ef51622..0421524 100644 > --- a/ext/openssl/openssl.c > +++ b/ext/openssl/openssl.c > @@ -3597,13 +3597,10 @@ PHP_FUNCTION(openssl_pkey_new) > OPENSSL_PKEY_SET_BN(Z_ARRVAL_PP(data), dh, g); > OPENSSL_PKEY_SET_BN(Z_ARRVAL_PP(data), dh, priv_key); > OPENSSL_PKEY_SET_BN(Z_ARRVAL_PP(data), dh, pub_key); > - if (dh->p && dh->g) { > - if (!dh->pub_key) { > - DH_generate_key(dh); > - } > - if (EVP_PKEY_assign_DH(pkey, dh)) { > - RETURN_RESOURCE(zend_list_insert(pkey, le_key TSRMLS_CC)); > - } > + if (dh->p && dh->g && > + (dh->pub_key || DH_generate_key(dh)) && > + EVP_PKEY_assign_DH(pkey, dh)) { > + RETURN_RESOURCE(zend_list_insert(pkey, le_key TSRMLS_CC)); > } > DH_free(dh); > } > diff --git a/ext/openssl/tests/bug55259.phpt b/ext/openssl/tests/bug55259.phpt > new file mode 100644 > index 0000000..27ededd > --- /dev/null > +++ b/ext/openssl/tests/bug55259.phpt > @@ -0,0 +1,29 @@ > +--TEST-- > +Bug #55259 (openssl extension does not get the DH parameters from DH key resource) > +--SKIPIF-- > +<?php if (!extension_loaded("openssl")) die("skip"); ?> > +--FILE-- > +<?php > + > +$phex = 'dcf93a0b883972ec0e19989ac5a2ce310e1d37717e8d9571bb7623731866e61e' . > + 'f75a2e27898b057f9891c2e27a639c3f29b60814581cd3b2ca3986d268370557' . > + '7d45c2e7e52dc81c7a171876e5cea74b1448bfdfaf18828efd2519f14e45e382' . > + '6634af1949e5b535cc829a483b8a76223e5d490a257f05bdff16f2fb22c583ab'; > +$dh_details = array( 'p' => $phex, 'g' => '2' ); > +$dh = openssl_pkey_new(array( 'dh'=> array( 'p' => $phex, > 'g' => '2' ))); > +var_dump($dh); > +$dh = openssl_pkey_new(array( 'dh'=> array( 'p' => hex2bin($phex), > 'g' => '2' ))); > +$details = openssl_pkey_get_details($dh); > +var_dump(bin2hex($details['dh']['p'])); > +var_dump($details['dh']['g']); > +var_dump(strlen($details['dh']['pub_key'])); > +var_dump(strlen($details['dh']['priv_key'])); > +echo "Done"; > +?> > +--EXPECT-- > +bool(false) > +string(256) > "dcf93a0b883972ec0e19989ac5a2ce310e1d37717e8d9571bb7623731866e61ef75a2e27898b057f9891c2e27a639c3f29b60814581cd3b2ca3986d2683705577d45c2e7e52dc81c7a171876e5cea74b1448bfdfaf18828efd2519f14e45e3826634af1949e5b535cc829a483b8a76223e5d490a257f05bdff16f2fb22c583ab" > +string(1) "2" > +int(128) > +int(128) > +Done > > -- Matteo Beccati Development & Consulting - http://www.beccati.com/

« previous php.cvs (#92379) next »