Author: dj Date: 2006-04-23 10:13:07 -0600 (Sun, 23 Apr 2006) New Revision: 1502
Added: trunk/OOo/OOo_2.0.2-no_pam-1.patch Log: added OOo-2.0.2-no_pam-1.patch Added: trunk/OOo/OOo_2.0.2-no_pam-1.patch =================================================================== --- trunk/OOo/OOo_2.0.2-no_pam-1.patch (rev 0) +++ trunk/OOo/OOo_2.0.2-no_pam-1.patch 2006-04-23 16:13:07 UTC (rev 1502) @@ -0,0 +1,235 @@ +Submitted By: DJ Lucas <dj_AT_linuxfromscratch_DOT_org> +Date: 2006-04-23 +Initial Package Version: 1.1rc4 +Origin: Thorsten Happel + See http://archive.linuxfromscratch.org/mail-archives/blfs-dev/2005-November/012106.html +Description: This patch removes the need for PAM headers by removing the + functions that use PAM. Updated for 2.0.2. +Upstream Status: Not Required + +--- OOB680_m5-orig/sal/osl/unx/security.c 2005-09-08 17:00:23.000000000 +0200 ++++ OOB680_m5/sal/osl/unx/security.c 2005-10-16 22:34:49.000000000 +0200 +@@ -111,8 +111,6 @@ + * + */ + +-#include <security/pam_appl.h> +- + typedef struct { + char* name; + char* password; +@@ -121,10 +119,10 @@ + typedef struct { + int (*pam_start)(const char *service_name, const char *user, + const struct pam_conv *pam_conversation, +- pam_handle_t **pamh); +- int (*pam_end) (pam_handle_t *pamh, int pam_status); +- int (*pam_authenticate) (pam_handle_t *pamh, int flags); +- int (*pam_acct_mgmt) (pam_handle_t *pamh, int flags); ++ void **pamh); ++ int (*pam_end) (void *pamh, int pam_status); ++ int (*pam_authenticate) (void *pamh, int flags); ++ int (*pam_acct_mgmt) (void *pamh, int flags); + } sal_PamModule; + + /* +@@ -142,69 +140,7 @@ + osl_PamConversation (int num_msg, const struct pam_message **msgm, + struct pam_response **response, void *appdata_ptr) + { +- int i; +- sal_Bool error; +- sal_PamData *pam_data; +- struct pam_response *p_reply; +- +- /* resource initialization */ +- pam_data = (sal_PamData*) appdata_ptr; +- p_reply = (struct pam_response *) calloc( num_msg, +- sizeof(struct pam_response)); +- if ( p_reply == NULL || pam_data == NULL ) +- { +- if ( p_reply != NULL ) +- free ( p_reply ); +- *response = NULL; +- return PAM_CONV_ERR; +- } +- +- /* pseudo dialog */ +- error = sal_False; +- for ( i = 0; i < num_msg ; i++ ) +- { +- switch ( msgm[ i ]->msg_style ) +- { +- case PAM_PROMPT_ECHO_OFF: +- p_reply[ i ].resp_retcode = 0; +- p_reply[ i ].resp = strdup( pam_data->password ); +- break; +- case PAM_PROMPT_ECHO_ON: +- p_reply[ i ].resp_retcode = 0; +- p_reply[ i ].resp = strdup( pam_data->name ); +- break; +- case PAM_ERROR_MSG: +- case PAM_TEXT_INFO: +- case PAM_BINARY_PROMPT: +- case PAM_BINARY_MSG: +- p_reply[ i ].resp_retcode = 0; +- p_reply[ i ].resp = NULL; +- break; +- default: +- error = sal_True; +- break; +- } +- } +- +- /* free resources on error */ +- if ( error ) +- { +- for ( i = 0; i < num_msg ; i++ ) +- if ( p_reply[ i ].resp ) +- { +- memset ( p_reply[ i ].resp, 0, +- strlen( p_reply[ i ].resp ) ); +- free ( p_reply[ i ].resp ); +- } +- free ( p_reply ); +- +- *response = NULL; +- return PAM_CONV_ERR; +- } +- +- /* well done */ +- *response = p_reply; +- return PAM_SUCCESS; ++ return -1; + } + + #ifndef PAM_LINK +@@ -218,45 +154,6 @@ + static sal_PamModule* osl_getPAM() + { + static sal_PamModule *pam_module = NULL; +- static sal_Bool load_once = sal_False; +- +- if ( !load_once ) +- { +- /* get library-handle. cannot use osl-module, since +- RTLD_GLOBAL is required for PAM-0.64 RH 5.2 +- (but not for PAM-0.66 RH 6.0) */ +- void *pam_hdl; +- +- pam_hdl = dlopen( "libpam.so.0", RTLD_GLOBAL | RTLD_LAZY ); +- +- if ( pam_hdl != NULL ) +- pam_module = (sal_PamModule*)calloc( 1, sizeof(sal_PamModule) ); +- +- /* load functions */ +- if ( pam_module != NULL ) +- { +- pam_module->pam_acct_mgmt = (int (*)(pam_handle_t *, int)) dlsym ( pam_hdl, "pam_acct_mgmt" ); +- pam_module->pam_authenticate +- = (int (*)(pam_handle_t *, int)) dlsym ( pam_hdl, "pam_authenticate" ); +- pam_module->pam_end = (int (*)(pam_handle_t *, int)) dlsym ( pam_hdl, "pam_end" ); +- pam_module->pam_start = (int (*)(const char *, const char *, const struct pam_conv *, pam_handle_t **)) dlsym ( pam_hdl, "pam_start" ); +- +- /* free resources, if not completely successful */ +- if ( (pam_module->pam_start == NULL) +- || (pam_module->pam_end == NULL) +- || (pam_module->pam_authenticate == NULL) +- || (pam_module->pam_acct_mgmt == NULL) ) +- { +- free( pam_module ); +- pam_module = NULL; +- dlclose( pam_hdl ); +- } +- } +- +- /* never try again */ +- load_once = sal_True; +- } +- + return pam_module; + } + #endif +@@ -269,53 +166,6 @@ + osl_PamAuthentification( const sal_Char* name, const sal_Char* password ) + { + sal_Bool success = sal_False; +- +-#ifndef PAM_LINK +- sal_PamModule* pam_module; +- +- pam_module = osl_getPAM(); +- if ( pam_module != NULL ) +- { +-#endif +- pam_handle_t *pam_handle = NULL; +- struct pam_conv pam_conversation; +- sal_PamData pam_data; +- +- int return_value; +- +- pam_data.name = (char*) name; +- pam_data.password = (char*) password; +- +- pam_conversation.conv = osl_PamConversation; +- pam_conversation.appdata_ptr = (void*)(&pam_data); +- +-#ifndef PAM_LINK +- return_value = pam_module->pam_start( "su", name, +- &pam_conversation, &pam_handle); +-#else +- return_value = pam_start( "su", name, +- &pam_conversation, &pam_handle); +-#endif +- if (return_value == PAM_SUCCESS ) +-#ifndef PAM_LINK +- return_value = pam_module->pam_authenticate(pam_handle, 0); +-#else +- return_value = pam_authenticate(pam_handle, 0); +-#endif +- if (return_value == PAM_SUCCESS ) +-#ifndef PAM_LINK +- return_value = pam_module->pam_acct_mgmt(pam_handle, 0); +- pam_module->pam_end( pam_handle, return_value ); +-#else +- return_value = pam_acct_mgmt(pam_handle, 0); +- pam_end( pam_handle, return_value ); +-#endif +- +- success = (sal_Bool)(return_value == PAM_SUCCESS); +-#ifndef PAM_LINK +- } +-#endif +- + return success; + } + + + + +--- OOB680_m5-orig/config_office/configure.in 2006-04-23 09:59:31.000000000 -0500 ++++ OOB680_m5/config_office/configure.in 2006-04-23 10:01:28.000000000 -0500 +@@ -1377,23 +1377,6 @@ + [AC_MSG_ERROR([cups/cups.h could not be found. libcupsys2-dev or cups???-devel missing?])], []) + fi + +-dnl =================================================================== +-dnl Check if PAM/pam_appl.h is available on Linux or FreeBSD +-dnl =================================================================== +-if test "$_os" = "Linux" -o "$_os" = "FreeBSD" -o "$_os" = "GNU"; then +- AC_CHECK_HEADER(security/pam_appl.h, [], +- [AC_MSG_ERROR([pam_appl.h could not be found. libpam-dev or pam-devel missing?])], []) +- AC_MSG_CHECKING([whether to link to libpam]) +- if test -n "$enable_pam_link"; then +- AC_MSG_RESULT([yes]) +- PAM_LINK=YES +- AC_CHECK_LIB(pam, pam_start, [], +- [AC_MSG_ERROR(libpam not found or functional)], []) +- else +- AC_MSG_RESULT([no, dynamically open it]) +- PAM_LINK=NO +- fi +-fi + AC_SUBST(PAM_LINK) + + if test "$_os" = "Linux"; then -- http://linuxfromscratch.org/mailman/listinfo/patches FAQ: http://www.linuxfromscratch.org/faq/ Unsubscribe: See the above information page
