From 012439b78e5dbb41ae90fbdf09ab1d8da50bb9fc Mon Sep 17 00:00:00 2001 From: Ayesh Karunaratne Date: Wed, 23 Dec 2020 02:58:51 +0700 Subject: FTP: Disallow direct `FTPConnection` construction Similar to other resource to object migrations, `FTPConnection` class is not allowed to be constructed with `new FTPConnection`. Related to b4503fbf882e490f16d85915e83173bd1e414e84. Closes GH-6533. --- ext/ftp/php_ftp.c | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'ext/ftp/php_ftp.c') diff --git a/ext/ftp/php_ftp.c b/ext/ftp/php_ftp.c index 30bffbdd8c..88a3cd02e7 100644 --- a/ext/ftp/php_ftp.c +++ b/ext/ftp/php_ftp.c @@ -82,6 +82,11 @@ static zend_object* ftp_object_create(zend_class_entry* ce) { return zobj; } +static zend_function *ftp_object_get_constructor(zend_object *zobj) { + zend_throw_error(NULL, "Cannot directly construct FTPConnection, use ftp_connect() or ftp_ssl_connect() instead"); + return NULL; +} + static void ftp_object_destroy(zend_object *zobj) { php_ftp_object *obj = ftp_object_from_zend_object(zobj); @@ -114,6 +119,7 @@ PHP_MINIT_FUNCTION(ftp) memcpy(&ftp_object_handlers, &std_object_handlers, sizeof(zend_object_handlers)); ftp_object_handlers.offset = XtOffsetOf(php_ftp_object, std); + ftp_object_handlers.get_constructor = ftp_object_get_constructor; ftp_object_handlers.dtor_obj = ftp_object_destroy; ftp_object_handlers.clone_obj = NULL; -- cgit v1.2.1