ports/net/samba3/files/patch-nsswitch_pam_winbind.c
Tim Bishop c89e412277 - Update to 3.0.25a.
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
2007-06-05 10:55:06 +00:00

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) {