X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/910e279ce7871bd35b90e558de7a0d0b17471b49..037aeaf61ace944c3e763346f2f2b877624e6e67:/sbr/netsec.c diff --git a/sbr/netsec.c b/sbr/netsec.c index ab490467..83d75631 100644 --- a/sbr/netsec.c +++ b/sbr/netsec.c @@ -6,10 +6,13 @@ * complete copyright information. */ -#include -#include -#include -#include +#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 #include #include "base64.h" @@ -30,7 +33,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 +42,7 @@ static int sasl_initialized = 0; #include #include -static int tls_initialized = 0; +static bool tls_initialized; static SSL_CTX *sslctx = NULL; /* SSL Context */ #endif /* TLS_SUPPORT */ @@ -288,7 +291,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; @@ -806,6 +810,7 @@ netsec_vprintf(netsec_context *nsc, char **errstr, const char *format, va_list ap) { int rc; + va_list apcopy; /* * Cheat a little. If we can fit the data into our outgoing buffer, @@ -813,8 +818,10 @@ netsec_vprintf(netsec_context *nsc, char **errstr, const char *format, */ 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)) { /* @@ -1032,7 +1039,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 +1110,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; @@ -1489,6 +1497,7 @@ netsec_get_sasl_ssf(netsec_context *nsc) #ifdef CYRUS_SASL return nsc->sasl_ssf; #else /* CYRUS_SASL */ + NMH_UNUSED(nsc); return 0; #endif /* CYRUS_SASL */ } @@ -1550,7 +1559,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) {