Browse Source

Make PAM mandatory

It is present on all UNIX systems anyway, so let's simplify things.
We will need it for more proper session startup anyway.
tags/v1.10.90
Pierre Ossman 5 years ago
parent
commit
d80817f101

+ 1
- 0
BUILDING.txt View File

@@ -32,6 +32,7 @@ Build Requirements (Unix)

-- Non-Mac platforms:
* X11 development kit
* PAM

-- If building Xvnc/libvnc.so:
* Xorg server source code, 1.7 or never

+ 2
- 4
CMakeLists.txt View File

@@ -263,8 +263,7 @@ if(ENABLE_GNUTLS)
endif()

# Check for PAM library
option(ENABLE_PAM "Enable PAM authentication support" ON)
if(ENABLE_PAM)
if(UNIX AND NOT APPLE)
check_include_files(security/pam_appl.h HAVE_PAM_H)
set(CMAKE_REQUIRED_LIBRARIES -lpam)
check_function_exists(pam_start HAVE_PAM_START)
@@ -272,10 +271,9 @@ if(ENABLE_PAM)
if(HAVE_PAM_H AND HAVE_PAM_START)
set(PAM_LIBS pam)
else()
set(ENABLE_PAM 0)
message(FATAL_ERROR "Could not find PAM development files")
endif()
endif()
set(HAVE_PAM ${ENABLE_PAM})

# Generate config.h and make sure the source finds it
configure_file(config.h.in config.h)

+ 1
- 1
common/rfb/CMakeLists.txt View File

@@ -75,7 +75,7 @@ endif(WIN32)

set(RFB_LIBRARIES ${JPEG_LIBRARIES} os rdr Xregion)

if(HAVE_PAM)
if(UNIX AND NOT APPLE)
set(RFB_SOURCES ${RFB_SOURCES} UnixPasswordValidator.cxx
UnixPasswordValidator.h pam.c pam.h)
set(RFB_LIBRARIES ${RFB_LIBRARIES} ${PAM_LIBS})

+ 5
- 5
common/rfb/SSecurityPlain.cxx View File

@@ -25,10 +25,10 @@
#include <rfb/SConnection.h>
#include <rfb/Exception.h>
#include <rdr/InStream.h>
#ifdef HAVE_PAM
#if !defined(WIN32) && !defined(__APPLE__)
#include <rfb/UnixPasswordValidator.h>
#endif
#ifdef BUILD_WIN
#ifdef WIN32
#include <rfb/WinPasswdValidator.h>
#endif

@@ -62,10 +62,10 @@ bool PasswordValidator::validUser(const char* username)

SSecurityPlain::SSecurityPlain(SConnection* sc) : SSecurity(sc)
{
#ifdef HAVE_PAM
valid = new UnixPasswordValidator();
#elif BUILD_WIN
#ifdef WIN32
valid = new WinPasswdValidator();
#elif !defined(__APPLE__)
valid = new UnixPasswordValidator();
#else
valid = NULL;
#endif

+ 0
- 6
common/rfb/UnixPasswordValidator.cxx View File

@@ -25,9 +25,7 @@
#include <rfb/Configuration.h>
#include <rfb/Exception.h>
#include <rfb/UnixPasswordValidator.h>
#ifdef HAVE_PAM
#include <rfb/pam.h>
#endif

using namespace rfb;

@@ -43,10 +41,6 @@ bool UnixPasswordValidator::validateInternal(SConnection * sc,
const char *username,
const char *password)
{
#ifdef HAVE_PAM
CharArray service(strDup(pamService.getData()));
return do_pam_auth(service.buf, username, password);
#else
throw AuthFailureException("PAM not supported");
#endif
}

+ 0
- 4
common/rfb/pam.c View File

@@ -22,10 +22,6 @@
#include <config.h>
#endif

#ifndef HAVE_PAM
#error "This source should not be compiled when PAM is unsupported"
#endif

#include <stdlib.h>
#include <string.h>
#include <security/pam_appl.h>

+ 0
- 8
common/rfb/pam.h View File

@@ -21,14 +21,6 @@
#ifndef __RFB_PAM_H__
#define __RFB_PAM_H__

#ifdef HAVE_CONFIG_H
#include <config.h>
#endif

#ifndef HAVE_PAM
#error "This header should not be included when PAM is unsupported"
#endif

#ifdef __cplusplus
extern "C" {
#endif

+ 0
- 1
config.h.in View File

@@ -4,7 +4,6 @@
#cmakedefine HAVE_ACTIVE_DESKTOP_H
#cmakedefine HAVE_ACTIVE_DESKTOP_L
#cmakedefine ENABLE_NLS 1
#cmakedefine HAVE_PAM

#cmakedefine DATA_DIR "@DATA_DIR@"
#cmakedefine LOCALE_DIR "@LOCALE_DIR@"

Loading…
Cancel
Save