Skip to content

Commit

Permalink
dev-php/pecl-pam: Revision bump to support PHP 7 and drop 5.4 and 5.5
Browse files Browse the repository at this point in the history
PHP 7 patch created by me as it was rather trivial changes

Package-Manager: portage-2.3.2
  • Loading branch information
Brian Evans committed Dec 1, 2016
1 parent 2ff2724 commit 8f113e3
Show file tree
Hide file tree
Showing 2 changed files with 163 additions and 0 deletions.
118 changes: 118 additions & 0 deletions dev-php/pecl-pam/files/1.0.3-php7.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
--- a/pam.c 2016-12-01 14:29:27.453904230 -0500
+++ b/pam.c 2016-12-01 14:27:26.496109755 -0500
@@ -227,8 +227,13 @@
PHP_FUNCTION(pam_auth)
{
char *username, *password;
+#if PHP_MAJOR_VERSION >= 7
+ size_t username_len, password_len;
+ zval *status = NULL, *server, *remote_addr;
+#else
int username_len, password_len;
zval *status = NULL, **server, **remote_addr;
+#endif
zend_bool checkacctmgmt = 1;

pam_auth_t userinfo = {NULL, NULL};
@@ -248,22 +253,37 @@
if (status) {
spprintf(&error_msg, 0, "%s (in %s)", (char *) pam_strerror(pamh, result), "pam_start");
zval_dtor(status);
+#if PHP_MAJOR_VERSION >= 7
+ ZVAL_STRING(status, error_msg);
+ efree(error_msg);
+#else
ZVAL_STRING(status, error_msg, 0);
+#endif
}
RETURN_FALSE;
}

+#if PHP_MAJOR_VERSION >= 7
+ if ((remote_addr = zend_hash_str_find(Z_ARR(PG(http_globals)[TRACK_VARS_SERVER]), "REMOTE_ADDR", sizeof("REMOTE_ADDR")-1)) != NULL && Z_TYPE_P(remote_addr) == IS_STRING) {
+ pam_set_item(pamh, PAM_RHOST, Z_STRVAL_P(remote_addr));
+#else
if (zend_hash_find(&EG(symbol_table), "_SERVER", sizeof("_SERVER"), (void **)&server) == SUCCESS && Z_TYPE_PP(server) == IS_ARRAY) {
if (zend_hash_find(Z_ARRVAL_PP(server), "REMOTE_ADDR", sizeof("REMOTE_ADDR"), (void **)&remote_addr) == SUCCESS && Z_TYPE_PP(remote_addr) == IS_STRING) {
pam_set_item(pamh, PAM_RHOST, Z_STRVAL_PP(remote_addr));
}
+#endif
}

if ((result = pam_authenticate(pamh, PAM_DISALLOW_NULL_AUTHTOK)) != PAM_SUCCESS) {
if (status) {
spprintf(&error_msg, 0, "%s (in %s)", (char *) pam_strerror(pamh, result), "pam_authenticate");
zval_dtor(status);
+#if PHP_MAJOR_VERSION >= 7
+ ZVAL_STRING(status, error_msg);
+ efree(error_msg);
+#else
ZVAL_STRING(status, error_msg, 0);
+#endif
}
pam_end(pamh, PAM_SUCCESS);
RETURN_FALSE;
@@ -274,7 +294,12 @@
if (status) {
spprintf(&error_msg, 0, "%s (in %s)", (char *) pam_strerror(pamh, result), "pam_acct_mgmt");
zval_dtor(status);
+#if PHP_MAJOR_VERSION >= 7
+ ZVAL_STRING(status, error_msg);
+ efree(error_msg);
+#else
ZVAL_STRING(status, error_msg, 0);
+#endif
}
pam_end(pamh, PAM_SUCCESS);
RETURN_FALSE;
@@ -291,7 +316,11 @@
PHP_FUNCTION(pam_chpass)
{
char *username, *oldpass, *newpass;
+#if PHP_MAJOR_VERSION >= 7
+ size_t username_len, oldpass_len, newpass_len;
+#else
int username_len, oldpass_len, newpass_len;
+#endif
zval *status = NULL;

pam_chpass_t userinfo = {NULL, NULL, NULL, 0};
@@ -312,7 +341,12 @@
if (status) {
spprintf(&error_msg, 0, "%s (in %s)", (char *) pam_strerror(pamh, result), "pam_start");
zval_dtor(status);
+#if PHP_MAJOR_VERSION >= 7
+ ZVAL_STRING(status, error_msg);
+ efree(error_msg);
+#else
ZVAL_STRING(status, error_msg, 0);
+#endif
}
RETURN_FALSE;
}
@@ -321,7 +355,12 @@
if (status) {
spprintf(&error_msg, 0, "%s (in %s)", (char *) pam_strerror(pamh, result), "pam_authenticate");
zval_dtor(status);
+#if PHP_MAJOR_VERSION >= 7
+ ZVAL_STRING(status, error_msg);
+ efree(error_msg);
+#else
ZVAL_STRING(status, error_msg, 0);
+#endif
}
pam_end(pamh, PAM_SUCCESS);
RETURN_FALSE;
@@ -331,7 +370,12 @@
if (status) {
spprintf(&error_msg, 0, "%s (in %s)", (char *) pam_strerror(pamh, result), "pam_chauthtok");
zval_dtor(status);
+#if PHP_MAJOR_VERSION >= 7
+ ZVAL_STRING(status, error_msg);
+ efree(error_msg);
+#else
ZVAL_STRING(status, error_msg, 0);
+#endif
}
pam_end(pamh, PAM_SUCCESS);
RETURN_FALSE;
45 changes: 45 additions & 0 deletions dev-php/pecl-pam/pecl-pam-1.0.3-r2.ebuild
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
# Copyright 1999-2016 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Id$

EAPI=6

PHP_EXT_NAME="pam"
PHP_EXT_INI="yes"
PHP_EXT_ZENDEXT="no"
DOCS=( README )

USE_PHP="php5-6 php7-0"

inherit php-ext-pecl-r3 pam

KEYWORDS="~amd64 ~x86"

DESCRIPTION="This extension provides PAM (Pluggable Authentication Modules) integration"
LICENSE="PHP-2.02"
SLOT="0"
IUSE="debug"

DEPEND="sys-libs/pam"
RDEPEND="${DEPEND}"

PATCHES=( "${FILESDIR}/${PV}-php7.patch" )

src_prepare() {
#Fix DOS line endings
for slot in $(php_get_slots); do
php_init_slot_env "${slot}"
sed -i 's/\r$//' -- pam.c || die
done
php-ext-source-r3_src_prepare
}

src_configure() {
local PHP_EXT_ECONF_ARGS=( --with-pam=/usr $(use_enable debug) )
php-ext-source-r3_src_configure
}

src_install() {
pamd_mimic_system php auth account password
php-ext-pecl-r3_src_install
}

0 comments on commit 8f113e3

Please sign in to comment.