com php-src: Allow crypto_method context value in str eam_socket_enable_crypto(): ext/standard/streamsf uncs.c

From: Date: Thu, 27 Feb 2014 13:41:25 +0000
Subject: com php-src: Allow crypto_method context value in str eam_socket_enable_crypto(): ext/standard/streamsf uncs.c
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-78183@lists.php.net to get a copy of this message
Commit: 41da7f276fb77d6a0ba3e3c62751e0c3537fbecf Author: Chris Wright <daverandom@php.net> Thu, 27 Feb 2014 13:41:25 +0000 Parents: 5abaf7cc8792ba2eb3808de1d155197ba072cf54 Branches: PHP-5.6 Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=41da7f276fb77d6a0ba3e3c62751e0c3537fbecf Log: Allow crypto_method context value in stream_socket_enable_crypto() Changed paths: M ext/standard/streamsfuncs.c Diff: diff --git a/ext/standard/streamsfuncs.c b/ext/standard/streamsfuncs.c index b623447..bf64282 100644 --- a/ext/standard/streamsfuncs.c +++ b/ext/standard/streamsfuncs.c @@ -40,6 +40,8 @@ typedef unsigned long long php_timeout_ull; typedef unsigned __int64 php_timeout_ull; #endif +#define GET_CTX_OPT(stream, wrapper, name, val) (stream->context && SUCCESS == php_stream_context_get_option(stream->context, wrapper, name, &val)) + static php_stream_context *decode_context_param(zval *contextresource TSRMLS_DC); /* Streams based network functions */ @@ -1502,16 +1504,27 @@ PHP_FUNCTION(stream_socket_enable_crypto) long cryptokind = 0; zval *zstream, *zsessstream = NULL; php_stream *stream, *sessstream = NULL; - zend_bool enable; + zend_bool enable, cryptokindnull; int ret; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rb|lr", &zstream, &enable, &cryptokind, &zsessstream) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rb|l!r", &zstream, &enable, &cryptokind, &cryptokindnull, &zsessstream) == FAILURE) { RETURN_FALSE; } php_stream_from_zval(stream, &zstream); - if (ZEND_NUM_ARGS() >= 3) { + if (enable) { + if (ZEND_NUM_ARGS() < 3 || cryptokindnull) { + zval **val; + + if (!GET_CTX_OPT(stream, "ssl", "crypto_method", val)) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "When enabling encryption you must specify the crypto type"); + RETURN_FALSE; + } + + cryptokind = Z_LVAL_PP(val); + } + if (zsessstream) { php_stream_from_zval(sessstream, &zsessstream); } @@ -1519,9 +1532,6 @@ PHP_FUNCTION(stream_socket_enable_crypto) if (php_stream_xport_crypto_setup(stream, cryptokind, sessstream TSRMLS_CC) < 0) { RETURN_FALSE; } - } else if (enable) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "When enabling encryption you must specify the crypto type"); - RETURN_FALSE; } ret = php_stream_xport_crypto_enable(stream, enable TSRMLS_CC);

« previous php.cvs (#78183) next »