security/pecl-pam: Add patch to fix pecl-pam with PHP 7*
PR: 224843 Submitted by: flo Approved by: tcberner (mentor) Differential Revision: https://reviews.freebsd.org/D13740
This commit is contained in:
parent
40048ef55e
commit
784e67257c
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=458001
@ -3,7 +3,7 @@
|
||||
|
||||
PORTNAME= pam
|
||||
PORTVERSION= 1.0.3
|
||||
PORTREVISION= 1
|
||||
PORTREVISION= 2
|
||||
CATEGORIES= security pear
|
||||
|
||||
MAINTAINER= joneum@FreeBSD.org
|
||||
@ -11,7 +11,6 @@ COMMENT= PECL classes for PAM integration
|
||||
|
||||
LICENSE= PHP202
|
||||
|
||||
USES= php:pecl
|
||||
IGNORE_WITH_PHP=70 71 72
|
||||
USES= php:pecl dos2unix
|
||||
|
||||
.include <bsd.port.mk>
|
||||
|
121
security/pecl-pam/files/patch-pam.c
Normal file
121
security/pecl-pam/files/patch-pam.c
Normal file
@ -0,0 +1,121 @@
|
||||
Obtained from Gentoo:
|
||||
https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=8f113e301d3d56ef3c9623c40014000a102db15c
|
||||
|
||||
--- pam.c.orig 2018-01-02 11:11:25 UTC
|
||||
+++ pam.c
|
||||
@@ -227,8 +227,13 @@ int chpass_pam_talker(int num_msg,
|
||||
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 @@ PHP_FUNCTION(pam_auth)
|
||||
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 @@ PHP_FUNCTION(pam_auth)
|
||||
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_auth)
|
||||
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 @@ PHP_FUNCTION(pam_chpass)
|
||||
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 @@ PHP_FUNCTION(pam_chpass)
|
||||
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 @@ PHP_FUNCTION(pam_chpass)
|
||||
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;
|
Loading…
Reference in New Issue
Block a user