* complete copyright information.
*/
-#include <h/mh.h>
-#include <h/utils.h>
-#include <h/netsec.h>
-#include <h/oauth.h>
+#include "h/mh.h"
+#include "credentials.h"
+#include "getcpy.h"
+#include "brkstring.h"
+#include "h/utils.h"
+#include "h/netsec.h"
+#include "h/oauth.h"
#include <stdarg.h>
#include <sys/select.h>
#include "base64.h"
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 */
#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 */
* 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;
va_list ap)
{
int rc;
+ va_list apcopy;
/*
* Cheat a little. If we can fit the data into our outgoing buffer,
*/
retry:
+ va_copy(apcopy, ap);
rc = vsnprintf((char *) nsc->ns_outptr,
- nsc->ns_outbufsize - nsc->ns_outbuflen, format, ap);
+ nsc->ns_outbufsize - nsc->ns_outbuflen, format, apcopy);
+ va_end(apcopy);
if (rc >= (int) (nsc->ns_outbufsize - nsc->ns_outbuflen)) {
/*
sasl_errstring(retval, NULL, NULL));
return NOTOK;
}
- sasl_initialized++;
+ sasl_initialized = true;
}
/*
* 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;
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.
*/
return NOTOK;
}
- tls_initialized++;
+ tls_initialized = true;
}
if (nsc->ns_readfd == -1 || nsc->ns_writefd == -1) {