]> git.ozlabs.org Git - ppp.git/blobdiff - pppd/plugins/winbind.c
pppd.8: Document netmask option
[ppp.git] / pppd / plugins / winbind.c
index 76db234737e93876f38d97171ab3877aea19c729..7f930dfc2ce493ef9f1a825a365eb0f2e6dbc7c2 100644 (file)
 *
 ***********************************************************************/
 
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "pppd.h"
-#include "chap-new.h"
-#include "chap_ms.h"
-#include "fsm.h"
-#include "ipcp.h"
-#include "mppe.h"
 #include <syslog.h>
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <stdlib.h>
 #include <errno.h>
 #include <ctype.h>
+#include <stdbool.h>
+#include <stdarg.h>
+#include <stdint.h>
+#include <stdio.h>
+
+#include <pppd/pppd.h>
+#include <pppd/options.h>
+#include <pppd/chap.h>
+#include <pppd/chap_ms.h>
+#include <pppd/upap.h>
+#include <pppd/fsm.h>
+#include <pppd/ipcp.h>
+#include <pppd/mppe.h>
+#include <pppd/crypto.h>
 
 #define BUF_LEN 1024
 
@@ -69,7 +73,7 @@ static int set_ntlm_auth(char **argv)
 
        p = argv[0];
        if (p[0] != '/') {
-               option_error("ntlm_auth-helper argument must be full path");
+               ppp_option_error("ntlm_auth-helper argument must be full path");
                return 0;
        }
        p = strdup(p);
@@ -83,28 +87,18 @@ static int set_ntlm_auth(char **argv)
        return 1;
 }
 
-static option_t Options[] = {
+static struct option Options[] = {
        { "ntlm_auth-helper", o_special, (void *) &set_ntlm_auth,
          "Path to ntlm_auth executable", OPT_PRIV },
        { NULL }
 };
 
-static int
-winbind_secret_check(void);
-
-static int winbind_pap_auth(char *user,
-                          char *passwd,
-                          char **msgp,
-                          struct wordlist **paddrs,
-                          struct wordlist **popts);
-static int winbind_chap_verify(char *user, char *ourname, int id,
-                              struct chap_digest_type *digest,
-                              unsigned char *challenge,
-                              unsigned char *response,
-                              char *message, int message_space);
-static int winbind_allowed_address(u_int32_t addr); 
-
-char pppd_version[] = VERSION;
+static pap_check_hook_fn winbind_secret_check;
+static pap_auth_hook_fn winbind_pap_auth;
+static chap_verify_hook_fn winbind_chap_verify;
+static int winbind_allowed_address(uint32_t addr);
+
+char pppd_version[] = PPPD_VERSION;
 
 /**********************************************************************
 * %FUNCTION: plugin_init
@@ -129,7 +123,7 @@ plugin_init(void)
     /* Don't ask the peer for anything other than MS-CHAP or MS-CHAP V2 */
     chap_mdtype_all &= (MDTYPE_MICROSOFT_V2 | MDTYPE_MICROSOFT);
     
-    add_options(Options);
+    ppp_add_options(Options);
 
     info("WINBIND plugin initialized.");
 }
@@ -287,7 +281,7 @@ unsigned int run_ntlm_auth(const char *username,
                return NOT_AUTHENTICATED;
         }
 
-        forkret = safe_fork(child_in[0], child_out[1], 2);
+        forkret = ppp_safe_fork(child_in[0], child_out[1], 2);
         if (forkret == -1) {
                if (error_string) {
                        *error_string = strdup("fork failed!");
@@ -450,7 +444,7 @@ unsigned int run_ntlm_auth(const char *username,
                 return NOT_AUTHENTICATED;
         }
 
-       while ((wait(&status) == -1) && errno == EINTR && !got_sigterm)
+       while ((wait(&status) == -1) && errno == EINTR && !ppp_signaled(SIGTERM))
                 ;
 
        if ((authenticated == AUTHENTICATED) && nt_key && !got_user_session_key) {
@@ -525,7 +519,7 @@ winbind_chap_verify(char *user, char *ourname, int id,
        int challenge_len, response_len;
        char domainname[256];
        char *domain;
-       char *username;
+       const char *username;
        char *p;
        unsigned char saresponse[MS_AUTH_RESPONSE_LENGTH+1];
 
@@ -559,7 +553,7 @@ winbind_chap_verify(char *user, char *ourname, int id,
                u_char *lm_response = NULL;
                int nt_response_size = 0;
                int lm_response_size = 0;
-               u_char session_key[16];
+               u_char session_key[MD4_DIGEST_LENGTH];
                
                if (response_len != MS_CHAP_RESPONSE_LEN)
                        break;                  /* not even the right length */
@@ -569,14 +563,14 @@ winbind_chap_verify(char *user, char *ourname, int id,
                        nt_response = &response[MS_CHAP_NTRESP];
                        nt_response_size = MS_CHAP_NTRESP_LEN;
                } else {
-#ifdef MSLANMAN
+#ifdef PPP_WITH_MSLANMAN
                        lm_response = &response[MS_CHAP_LANMANRESP];
                        lm_response_size = MS_CHAP_LANMANRESP_LEN;
 #else
                        /* Should really propagate this into the error packet. */
                        notice("Peer request for LANMAN auth not supported");
                        return NOT_AUTHENTICATED;
-#endif /* MSLANMAN */
+#endif /* PPP_WITH_MSLANMAN */
                }
                
                /* ship off to winbind, and check */
@@ -590,7 +584,7 @@ winbind_chap_verify(char *user, char *ourname, int id,
                                  nt_response, nt_response_size,
                                  session_key,
                                  &error_string) == AUTHENTICATED) {
-#ifdef MPPE
+#ifdef PPP_WITH_MPPE
                        mppe_set_chapv1(challenge, session_key);
 #endif
                        slprintf(message, message_space, "Access granted");
@@ -611,7 +605,7 @@ winbind_chap_verify(char *user, char *ourname, int id,
        case CHAP_MICROSOFT_V2:
        {
                u_char Challenge[8];
-               u_char session_key[MD4_SIGNATURE_SIZE];
+               u_char session_key[MD4_DIGEST_LENGTH];
                char *error_string = NULL;
                
                if (response_len != MS_CHAP2_RESPONSE_LEN)
@@ -637,7 +631,7 @@ winbind_chap_verify(char *user, char *ourname, int id,
                                &response[MS_CHAP2_NTRESP],
                                &response[MS_CHAP2_PEER_CHALLENGE],
                                challenge, user, saresponse);
-#ifdef MPPE
+#ifdef PPP_WITH_MPPE
                        mppe_set_chapv2(session_key, &response[MS_CHAP2_NTRESP],
                                       MS_CHAP2_AUTHENTICATOR);
 #endif
@@ -671,7 +665,7 @@ winbind_chap_verify(char *user, char *ourname, int id,
 }
 
 static int 
-winbind_allowed_address(u_int32_t addr) 
+winbind_allowed_address(uint32_t addr)
 {
        ipcp_options *wo = &ipcp_wantoptions[0];
        if (wo->hisaddr !=0 && wo->hisaddr == addr) {