]> diplodocus.org Git - nmh/blobdiff - sbr/netsec.c
Various IMAP protocol improvements
[nmh] / sbr / netsec.c
index 4b5edcfcd0638fd35ef7d2f70dcec96abf245446..01c25f5f375419bda95542da29d22f243100b9e3 100644 (file)
@@ -30,7 +30,7 @@ static int netsec_get_user(void *context, int id, const char **result,
 static int netsec_get_password(sasl_conn_t *conn, void *context, int id,
                               sasl_secret_t **psecret);
 
-static int sasl_initialized = 0;
+static bool sasl_initialized;
 
 #define SASL_MAXRECVBUF 65536
 #endif /* CYRUS_SASL */
@@ -39,7 +39,7 @@ static int sasl_initialized = 0;
 #include <openssl/ssl.h>
 #include <openssl/err.h>
 
-static int tls_initialized = 0;
+static bool tls_initialized;
 static SSL_CTX *sslctx = NULL;         /* SSL Context */
 
 #endif /* TLS_SUPPORT */
@@ -288,7 +288,8 @@ netsec_set_snoop(netsec_context *nsc, int snoop)
  * Set the snoop callback for this connection.
  */
 
-void netsec_set_snoop_callback(netsec_context *nsc,
+void
+netsec_set_snoop_callback(netsec_context *nsc,
                               netsec_snoop_callback callback, void *context)
 {
     nsc->ns_snoop_cb = callback;
@@ -881,7 +882,7 @@ netsec_flush(netsec_context *nsc, char **errstr)
 
     if (nsc->ns_snoop) {
        unsigned int snoopoutlen = netoutlen;
-       const char *snoopoutbuf = nsc->ns_outbuffer;
+       const char *snoopoutbuf = (const char *) nsc->ns_outbuffer;
 
        while (snoopoutlen > 0) {
            const char *end = strpbrk(snoopoutbuf, "\r\n");
@@ -913,7 +914,7 @@ netsec_flush(netsec_context *nsc, char **errstr)
 #endif /* TLS_SUPPORT */
            fprintf(stderr, "=> ");
            if (nsc->ns_snoop_cb) {
-               char *ptr;
+               const char *ptr;
                unsigned int cb_len = outlen;
 
                if (nsc->ns_snoop_savebuf) {
@@ -1032,7 +1033,7 @@ netsec_set_sasl_params(netsec_context *nsc, const char *service,
                       sasl_errstring(retval, NULL, NULL));
            return NOTOK;
        }
-       sasl_initialized++;
+       sasl_initialized = true;
     }
 
     /*
@@ -1103,7 +1104,8 @@ netsec_set_sasl_params(netsec_context *nsc, const char *service,
  * library when asked.
  */
 
-int netsec_get_user(void *context, int id, const char **result,
+int
+netsec_get_user(void *context, int id, const char **result,
                    unsigned int *len)
 {
     netsec_context *nsc = (netsec_context *) context;
@@ -1479,6 +1481,20 @@ netsec_get_sasl_mechanism(netsec_context *nsc)
     return nsc->sasl_chosen_mech;
 }
 
+/*
+ * Return the negotiated SASL strength security factor (SSF)
+ */
+
+int
+netsec_get_sasl_ssf(netsec_context *nsc)
+{
+#ifdef CYRUS_SASL
+    return nsc->sasl_ssf;
+#else /* CYRUS_SASL */
+    return 0;
+#endif /* CYRUS_SASL */
+}
+
 /*
  * Set an OAuth2 service name, if we support it.
  */
@@ -1536,7 +1552,7 @@ netsec_set_tls(netsec_context *nsc, int tls, int noverify, char **errstr)
                return NOTOK;
            }
 
-           tls_initialized++;
+           tls_initialized = true;
        }
 
        if (nsc->ns_readfd == -1 || nsc->ns_writefd == -1) {