mirror of
https://git.freebsd.org/ports.git
synced 2025-06-19 19:50:31 -04:00
Major bug fixes included in Samba 3.0.25a are: o Missing supplementary Unix group membership when using "force group". o Premature expiration of domain user passwords when using a Samba domain controller. o Failure to open the Windows object picker against a server configured to use "security = domain". * Authentication failures when using security = server. Plus additional local fixes. PR: ports/113358 Submitted by: maintainer
156 lines
6.3 KiB
C
156 lines
6.3 KiB
C
--- nsswitch/pam_winbind.c.orig Sat Apr 21 03:48:07 2007
|
|
+++ nsswitch/pam_winbind.c Mon Jun 4 02:56:34 2007
|
|
@@ -14,13 +14,13 @@
|
|
|
|
#define _PAM_LOG_FUNCTION_ENTER(function, pamh, ctrl, flags) \
|
|
do { \
|
|
- _pam_log_debug(pamh, ctrl, LOG_DEBUG, "[pamh: 0x%08x] ENTER: " function " (flags: 0x%04x)", (uint32) pamh, flags); \
|
|
+ _pam_log_debug(pamh, ctrl, LOG_DEBUG, "[pamh: 0x%p] ENTER: " function " (flags: 0x%04x)", pamh, flags); \
|
|
_pam_log_state(pamh, ctrl); \
|
|
} while (0)
|
|
|
|
#define _PAM_LOG_FUNCTION_LEAVE(function, pamh, ctrl, retval) \
|
|
do { \
|
|
- _pam_log_debug(pamh, ctrl, LOG_DEBUG, "[pamh: 0x%08x] LEAVE: " function " returning %d", (uint32) pamh, retval); \
|
|
+ _pam_log_debug(pamh, ctrl, LOG_DEBUG, "[pamh: 0x%p] LEAVE: " function " returning %d", pamh, retval); \
|
|
_pam_log_state(pamh, ctrl); \
|
|
} while (0)
|
|
|
|
@@ -32,16 +32,16 @@
|
|
* Work around the pam API that has functions with void ** as parameters.
|
|
* These lead to strict aliasing warnings with gcc.
|
|
*/
|
|
-static int _pam_get_item(const pam_handle_t *pamh, int item_type,
|
|
+static int _pam_get_item(pam_handle_t *pamh, int item_type,
|
|
const void *_item)
|
|
{
|
|
const void **item = (const void **)_item;
|
|
return pam_get_item(pamh, item_type, item);
|
|
}
|
|
-static int _pam_get_data(const pam_handle_t *pamh,
|
|
- const char *module_data_name, const void *_data)
|
|
+static int _pam_get_data(pam_handle_t *pamh,
|
|
+ const char *module_data_name, void *_data)
|
|
{
|
|
- const void **data = (const void **)_data;
|
|
+ void **data = (void **)_data;
|
|
return pam_get_data(pamh, module_data_name, data);
|
|
}
|
|
|
|
@@ -53,7 +53,7 @@
|
|
pam_vsyslog(pamh, err, format, args);
|
|
}
|
|
#else
|
|
-static void _pam_log_int(const pam_handle_t *pamh, int err, const char *format, va_list args)
|
|
+static void _pam_log_int(pam_handle_t *pamh, int err, const char *format, va_list args)
|
|
{
|
|
char *format2 = NULL;
|
|
const char *service;
|
|
@@ -78,8 +78,8 @@
|
|
return on(ctrl, WINBIND_SILENT);
|
|
}
|
|
|
|
-static void _pam_log(const pam_handle_t *pamh, int ctrl, int err, const char *format, ...) PRINTF_ATTRIBUTE(4,5);
|
|
-static void _pam_log(const pam_handle_t *pamh, int ctrl, int err, const char *format, ...)
|
|
+static void _pam_log(pam_handle_t *pamh, int ctrl, int err, const char *format, ...) PRINTF_ATTRIBUTE(4,5);
|
|
+static void _pam_log(pam_handle_t *pamh, int ctrl, int err, const char *format, ...)
|
|
{
|
|
va_list args;
|
|
|
|
@@ -118,8 +118,8 @@
|
|
return _pam_log_is_debug_enabled(ctrl);
|
|
}
|
|
|
|
-static void _pam_log_debug(const pam_handle_t *pamh, int ctrl, int err, const char *format, ...) PRINTF_ATTRIBUTE(4,5);
|
|
-static void _pam_log_debug(const pam_handle_t *pamh, int ctrl, int err, const char *format, ...)
|
|
+static void _pam_log_debug(pam_handle_t *pamh, int ctrl, int err, const char *format, ...) PRINTF_ATTRIBUTE(4,5);
|
|
+static void _pam_log_debug(pam_handle_t *pamh, int ctrl, int err, const char *format, ...)
|
|
{
|
|
va_list args;
|
|
|
|
@@ -132,20 +132,20 @@
|
|
va_end(args);
|
|
}
|
|
|
|
-static void _pam_log_state_datum(const pam_handle_t *pamh, int ctrl, int item_type, const char *key, int is_string)
|
|
+static void _pam_log_state_datum(pam_handle_t *pamh, int ctrl, int item_type, const char *key, int is_string)
|
|
{
|
|
- const void *data = NULL;
|
|
+ void *data = NULL;
|
|
if (item_type != 0) {
|
|
- pam_get_item(pamh, item_type, &data);
|
|
+ _pam_get_item(pamh, item_type, &data);
|
|
} else {
|
|
pam_get_data(pamh, key, &data);
|
|
}
|
|
if (data != NULL) {
|
|
const char *type = (item_type != 0) ? "ITEM" : "DATA";
|
|
if (is_string != 0) {
|
|
- _pam_log_debug(pamh, ctrl, LOG_DEBUG, "[pamh: 0x%08x] STATE: %s(%s) = \"%s\" (0x%08x)", (uint32) pamh, type, key, (const char *) data, (uint32) data);
|
|
+ _pam_log_debug(pamh, ctrl, LOG_DEBUG, "[pamh: 0x%p] STATE: %s(%s) = \"%s\" (0x%p)", pamh, type, key, (const char *) data, data);
|
|
} else {
|
|
- _pam_log_debug(pamh, ctrl, LOG_DEBUG, "[pamh: 0x%08x] STATE: %s(%s) = 0x%08x", (uint32) pamh, type, key, (uint32) data);
|
|
+ _pam_log_debug(pamh, ctrl, LOG_DEBUG, "[pamh: 0x%p] STATE: %s(%s) = 0x%p", pamh, type, key, data);
|
|
}
|
|
}
|
|
}
|
|
@@ -171,7 +171,7 @@
|
|
#define _PAM_LOG_STATE_ITEM_PASSWORD(pamh, ctrl, item_type) \
|
|
_pam_log_state_datum(pamh, ctrl, item_type, #item_type, _LOG_PASSWORD_AS_STRING)
|
|
|
|
-static void _pam_log_state(const pam_handle_t *pamh, int ctrl)
|
|
+static void _pam_log_state(pam_handle_t *pamh, int ctrl)
|
|
{
|
|
if (!_pam_log_is_debug_state_enabled(ctrl)) {
|
|
return;
|
|
@@ -202,7 +202,7 @@
|
|
_PAM_LOG_STATE_DATA_POINTER(pamh, ctrl, PAM_WINBIND_PWD_LAST_SET);
|
|
}
|
|
|
|
-static int _pam_parse(const pam_handle_t *pamh, int flags, int argc, const char **argv, dictionary **result_d)
|
|
+static int _pam_parse(pam_handle_t *pamh, int flags, int argc, const char **argv, dictionary **result_d)
|
|
{
|
|
int ctrl = 0;
|
|
const char *config_file = NULL;
|
|
@@ -313,7 +313,7 @@
|
|
{
|
|
int ctrl = _pam_parse(pamh, 0, 0, NULL, NULL);
|
|
if (_pam_log_is_debug_state_enabled(ctrl)) {
|
|
- _pam_log_debug(pamh, ctrl, LOG_DEBUG, "[pamh: 0x%08x] CLEAN: cleaning up PAM data 0x%08x (error_status = %d)", (uint32) pamh, (uint32) data, error_status);
|
|
+ _pam_log_debug(pamh, ctrl, LOG_DEBUG, "[pamh: 0x%p] CLEAN: cleaning up PAM data 0x%p (error_status = %d)", pamh, data, error_status);
|
|
}
|
|
SAFE_FREE(data);
|
|
}
|
|
@@ -1441,7 +1441,7 @@
|
|
return PAM_SUCCESS;
|
|
}
|
|
|
|
-const char *get_conf_item_string(const pam_handle_t *pamh,
|
|
+const char *get_conf_item_string(pam_handle_t *pamh,
|
|
int argc,
|
|
const char **argv,
|
|
int ctrl,
|
|
@@ -1490,12 +1490,12 @@
|
|
return parm_opt;
|
|
}
|
|
|
|
-const char *get_krb5_cc_type_from_config(const pam_handle_t *pamh, int argc, const char **argv, int ctrl, dictionary *d)
|
|
+const char *get_krb5_cc_type_from_config(pam_handle_t *pamh, int argc, const char **argv, int ctrl, dictionary *d)
|
|
{
|
|
return get_conf_item_string(pamh, argc, argv, ctrl, d, "krb5_ccache_type", WINBIND_KRB5_CCACHE_TYPE);
|
|
}
|
|
|
|
-const char *get_member_from_config(const pam_handle_t *pamh, int argc, const char **argv, int ctrl, dictionary *d)
|
|
+const char *get_member_from_config(pam_handle_t *pamh, int argc, const char **argv, int ctrl, dictionary *d)
|
|
{
|
|
const char *ret = NULL;
|
|
ret = get_conf_item_string(pamh, argc, argv, ctrl, d, "require_membership_of", WINBIND_REQUIRED_MEMBERSHIP);
|
|
@@ -1735,7 +1735,7 @@
|
|
ret = PAM_USER_UNKNOWN;
|
|
goto out;
|
|
case 0:
|
|
- pam_get_data( pamh, PAM_WINBIND_NEW_AUTHTOK_REQD, (const void **)&tmp);
|
|
+ pam_get_data( pamh, PAM_WINBIND_NEW_AUTHTOK_REQD, (void **)&tmp);
|
|
if (tmp != NULL) {
|
|
ret = atoi((const char *)tmp);
|
|
switch (ret) {
|