summaryrefslogtreecommitdiffstats
path: root/server
diff options
context:
space:
mode:
authorMarc-André Lureau <marcandre.lureau@redhat.com>2012-03-20 20:29:57 +0100
committerMarc-André Lureau <marcandre.lureau@redhat.com>2012-03-23 13:10:54 +0100
commit4df135c858d7dfb1aa0ae5d3cb17d786410d1544 (patch)
tree05663315cb85c724b1d17178baa5bbf7a5bfaacf /server
parentd4ba4ee690aeb72b86c5342c77a54b5a1a185975 (diff)
downloadspice-4df135c858d7dfb1aa0ae5d3cb17d786410d1544.tar.gz
spice-4df135c858d7dfb1aa0ae5d3cb17d786410d1544.tar.xz
spice-4df135c858d7dfb1aa0ae5d3cb17d786410d1544.zip
sasl: small refactoring, check memcheck != NULL
Diffstat (limited to 'server')
-rw-r--r--server/reds.c18
1 files changed, 8 insertions, 10 deletions
diff --git a/server/reds.c b/server/reds.c
index b5d185e1..30e3ac04 100644
--- a/server/reds.c
+++ b/server/reds.c
@@ -2480,9 +2480,7 @@ static void reds_start_auth_sasl(RedLinkInfo *link)
if (err != SASL_OK) {
red_printf("cannot set SASL external SSF %d (%s)",
err, sasl_errstring(err, NULL, NULL));
- sasl_dispose(&sasl->conn);
- sasl->conn = NULL;
- goto error;
+ goto error_dispose;
}
} else {
sasl->wantSSF = 1;
@@ -2510,9 +2508,7 @@ static void reds_start_auth_sasl(RedLinkInfo *link)
if (err != SASL_OK) {
red_printf("cannot set SASL security props %d (%s)",
err, sasl_errstring(err, NULL, NULL));
- sasl_dispose(&sasl->conn);
- sasl->conn = NULL;
- goto error;
+ goto error_dispose;
}
err = sasl_listmech(sasl->conn,
@@ -2523,13 +2519,12 @@ static void reds_start_auth_sasl(RedLinkInfo *link)
&mechlist,
NULL,
NULL);
- if (err != SASL_OK) {
+ if (err != SASL_OK || mechlist == NULL) {
red_printf("cannot list SASL mechanisms %d (%s)",
err, sasl_errdetail(sasl->conn));
- sasl_dispose(&sasl->conn);
- sasl->conn = NULL;
- goto error;
+ goto error_dispose;
}
+
red_printf("Available mechanisms for client: '%s'", mechlist);
sasl->mechlist = spice_strdup(mechlist);
@@ -2549,6 +2544,9 @@ static void reds_start_auth_sasl(RedLinkInfo *link)
return;
+error_dispose:
+ sasl_dispose(&sasl->conn);
+ sasl->conn = NULL;
error:
reds_link_free(link);
return;