nmh-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Nmh-commits] CVS: nmh/uip popsbr.c,1.8,1.8.2.1


From: Ken Hornstein <address@hidden>
Subject: [Nmh-commits] CVS: nmh/uip popsbr.c,1.8,1.8.2.1
Date: Fri, 05 Sep 2003 17:03:37 -0400

Update of /cvsroot/nmh/nmh/uip
In directory subversions:/tmp/cvs-serv1916/uip

Modified Files:
      Tag: RELEASE_1_1
        popsbr.c 
Log Message:
Updates for new SASL support.


Index: popsbr.c
===================================================================
RCS file: /cvsroot/nmh/nmh/uip/popsbr.c,v
retrieving revision 1.8
retrieving revision 1.8.2.1
diff -C2 -r1.8 -r1.8.2.1
*** popsbr.c    2 Jul 2002 22:09:15 -0000       1.8
--- popsbr.c    5 Sep 2003 21:03:35 -0000       1.8.2.1
***************
*** 28,31 ****
--- 28,32 ----
  #ifdef CYRUS_SASL
  # include <sasl.h>
+ # include <saslutil.h>
  #endif /* CYRUS_SASL */
  
***************
*** 78,81 ****
--- 79,83 ----
      { SASL_CB_PASS, sasl_get_pass, NULL },
  #define POP_SASL_CB_N_PASS 1
+     { SASL_CB_LOG, NULL, NULL },
      { SASL_CB_LIST_END, NULL, NULL },
  };
***************
*** 164,173 ****
  pop_auth_sasl(char *user, char *host, char *mech)
  {
!     int result, status, sasl_capability = 0, outlen;
!     unsigned int buflen;
      char server_mechs[256], *buf, outbuf[BUFSIZ];
      const char *chosen_mech;
      sasl_security_properties_t secprops;
-     sasl_external_properties_t extprops;
      struct pass_context p_context;
      sasl_ssf_t *ssf;
--- 166,174 ----
  pop_auth_sasl(char *user, char *host, char *mech)
  {
!     int result, status, sasl_capability = 0;
!     unsigned int buflen, outlen;
      char server_mechs[256], *buf, outbuf[BUFSIZ];
      const char *chosen_mech;
      sasl_security_properties_t secprops;
      struct pass_context p_context;
      sasl_ssf_t *ssf;
***************
*** 241,245 ****
      }
  
!     result = sasl_client_new("pop", host, NULL, SASL_SECURITY_LAYER, &conn);
  
      if (result != SASL_OK) {
--- 242,246 ----
      }
  
!     result = sasl_client_new("pop", host, NULL, NULL, NULL, 0, &conn);
  
      if (result != SASL_OK) {
***************
*** 256,260 ****
      secprops.maxbufsize = BUFSIZ;
      secprops.max_ssf = UINT_MAX;
-     memset(&extprops, 0, sizeof(extprops));
  
      result = sasl_setprop(conn, SASL_SEC_PROPS, &secprops);
--- 257,260 ----
***************
*** 262,276 ****
      if (result != SASL_OK) {
        snprintf(response, sizeof(response), "SASL security property "
!                "initialization failed: %s",
!                sasl_errstring(result, NULL, NULL));
!       return NOTOK;
!     }
! 
!     result = sasl_setprop(conn, SASL_SSF_EXTERNAL, &extprops);
! 
!     if (result != SASL_OK) {
!       snprintf(response, sizeof(response), "SASL external property "
!                "initialization failed: %s",
!                sasl_errstring(result, NULL, NULL));
        return NOTOK;
      }
--- 262,266 ----
      if (result != SASL_OK) {
        snprintf(response, sizeof(response), "SASL security property "
!                "initialization failed: %s", sasl_errdetail(conn));
        return NOTOK;
      }
***************
*** 281,290 ****
       */
  
!     result = sasl_client_start(conn, mech ? mech : server_mechs,
!                              NULL, NULL, &buf, &buflen, &chosen_mech);
  
      if (result != SASL_OK && result != SASL_CONTINUE) {
        snprintf(response, sizeof(response), "SASL client start failed: %s",
!                sasl_errstring(result, NULL, NULL));
        return NOTOK;
      }
--- 271,282 ----
       */
  
!     result = sasl_client_start(conn,
!                              (const char *) (mech ? mech : server_mechs),
!                              NULL, (const char **) &buf,
!                              &buflen, &chosen_mech);
  
      if (result != SASL_OK && result != SASL_CONTINUE) {
        snprintf(response, sizeof(response), "SASL client start failed: %s",
!                sasl_errdetail(conn));
        return NOTOK;
      }
***************
*** 292,296 ****
      if (buflen) {
        status = sasl_encode64(buf, buflen, outbuf, sizeof(outbuf), NULL);
-       free(buf);
        if (status != SASL_OK) {
            snprintf(response, sizeof(response), "SASL base64 encode "
--- 284,287 ----
***************
*** 328,332 ****
  
        result = sasl_decode64(response + 2, strlen(response + 2),
!                              outbuf, &outlen);
        
        if (result != SASL_OK) {
--- 319,323 ----
  
        result = sasl_decode64(response + 2, strlen(response + 2),
!                              outbuf, sizeof(outbuf), &outlen);
        
        if (result != SASL_OK) {
***************
*** 337,351 ****
        }
  
!       result = sasl_client_step(conn, outbuf, outlen, NULL, &buf, &buflen);
  
        if (result != SASL_OK && result != SASL_CONTINUE) {
            command("*");
            snprintf(response, sizeof(response), "SASL client negotiaton "
!                    "failed: %s", sasl_errstring(result, NULL, NULL));
            return NOTOK;
        }
  
        status = sasl_encode64(buf, buflen, outbuf, sizeof(outbuf), NULL);
-       free(buf);
  
        if (status != SASL_OK) {
--- 328,342 ----
        }
  
!       result = sasl_client_step(conn, outbuf, outlen, NULL,
!                                 (const char **) &buf, &buflen);
  
        if (result != SASL_OK && result != SASL_CONTINUE) {
            command("*");
            snprintf(response, sizeof(response), "SASL client negotiaton "
!                    "failed: %s", sasl_errdetail(conn));
            return NOTOK;
        }
  
        status = sasl_encode64(buf, buflen, outbuf, sizeof(outbuf), NULL);
  
        if (status != SASL_OK) {
***************
*** 368,393 ****
  
      /*
-      * Depending on the mechanism, we might need to call sasl_client_step()
-      * one more time.  Do that now.
-      */
- 
-     result = sasl_client_step(conn, NULL, 0, NULL, &buf, &buflen);
- 
-     if (result != SASL_OK) {
-       snprintf(response, sizeof(response), "SASL final client negotiaton "
-                "failed: %s", sasl_errstring(result, NULL, NULL));
-       return NOTOK;
-     }
- 
-     /*
       * We _should_ be okay now.  Get a few properties now that negotiation
       * has completed.
       */
  
!     result = sasl_getprop(conn, SASL_MAXOUTBUF, (void **) &moutbuf);
  
      if (result != SASL_OK) {
        snprintf(response, sizeof(response), "Cannot retrieve SASL negotiated "
!                "output buffer size: %s", sasl_errstring(result, NULL, NULL));
        return NOTOK;
      }
--- 359,371 ----
  
      /*
       * We _should_ be okay now.  Get a few properties now that negotiation
       * has completed.
       */
  
!     result = sasl_getprop(conn, SASL_MAXOUTBUF, (const void **) &moutbuf);
  
      if (result != SASL_OK) {
        snprintf(response, sizeof(response), "Cannot retrieve SASL negotiated "
!                "output buffer size: %s", sasl_errdetail(conn));
        return NOTOK;
      }
***************
*** 395,399 ****
      maxoutbuf = *moutbuf;
  
!     result = sasl_getprop(conn, SASL_SSF, (void **) &ssf);
  
      sasl_ssf = *ssf;
--- 373,377 ----
      maxoutbuf = *moutbuf;
  
!     result = sasl_getprop(conn, SASL_SSF, (const void **) &ssf);
  
      sasl_ssf = *ssf;
***************
*** 401,406 ****
      if (result != SASL_OK) {
        snprintf(response, sizeof(response), "Cannot retrieve SASL negotiated "
!                "security strength factor: %s",
!                sasl_errstring(result, NULL, NULL));
        return NOTOK;
      }
--- 379,383 ----
      if (result != SASL_OK) {
        snprintf(response, sizeof(response), "Cannot retrieve SASL negotiated "
!                "security strength factor: %s", sasl_errdetail(conn));
        return NOTOK;
      }
***************
*** 462,466 ****
  
      (*psecret)->len = len;
!     strcpy((*psecret)->data, pass);
  
      return SASL_OK;
--- 439,443 ----
  
      (*psecret)->len = len;
!     strcpy((char *) (*psecret)->data, pass);
  
      return SASL_OK;
***************
*** 1077,1090 ****
        strcat(outbuf, "\r\n");
  
!       result = sasl_encode(conn, outbuf, strlen(outbuf), &buf, &buflen);
  
        if (result != SASL_OK) {
            snprintf(response, sizeof(response), "SASL encoding error: %s",
!                    sasl_errstring(result, NULL, NULL));
            return NOTOK;
        }
  
        fwrite(buf, buflen, 1, iop);
-       free(buf);
      }
  #endif /* CYRUS_SASL */
--- 1054,1067 ----
        strcat(outbuf, "\r\n");
  
!       result = sasl_encode(conn, outbuf, strlen(outbuf),
!                            (const char **) &buf, &buflen);
  
        if (result != SASL_OK) {
            snprintf(response, sizeof(response), "SASL encoding error: %s",
!                    sasl_errdetail(conn));
            return NOTOK;
        }
  
        fwrite(buf, buflen, 1, iop);
      }
  #endif /* CYRUS_SASL */
***************
*** 1152,1160 ****
        } else {
  
!           result = sasl_decode(conn, tmpbuf, cc, &retbuf, &retbufsize);
  
            if (result != SASL_OK) {
                snprintf(response, sizeof(response), "Error during SASL "
!                        "decoding: %s", sasl_errstring(result, NULL, NULL));
                return -2;
            }
--- 1129,1138 ----
        } else {
  
!           result = sasl_decode(conn, tmpbuf, cc,
!                                (const char **) &retbuf, &retbufsize);
  
            if (result != SASL_OK) {
                snprintf(response, sizeof(response), "Error during SASL "
!                        "decoding: %s", sasl_errdetail(conn));
                return -2;
            }
***************
*** 1175,1180 ****
      ptr = buffer + 1;
      cnt = retbufsize - 1;
-     if (sasl_complete)
-       free(retbuf);
  
      return (int) buffer[0];
--- 1153,1156 ----





reply via email to

[Prev in Thread] Current Thread [Next in Thread]