util.sasl_cyrus: Protect the call to cyrussasl.server_new properly.

Wed, 17 Mar 2010 18:57:19 -0700

author
Paul Aurich <paul@darkrain42.org>
date
Wed, 17 Mar 2010 18:57:19 -0700
changeset 2901
5f3ccf7dd3f1
parent 2899
6e57f5e0cc91
child 2902
c405486f289c

util.sasl_cyrus: Protect the call to cyrussasl.server_new properly.

util/sasl_cyrus.lua file | annotate | diff | comparison | revisions
--- a/util/sasl_cyrus.lua	Wed Mar 17 15:29:14 2010 -0700
+++ b/util/sasl_cyrus.lua	Wed Mar 17 18:57:19 2010 -0700
@@ -52,7 +52,14 @@
 
 	sasl_i.realm = realm;
 	sasl_i.service_name = service_name;
-	sasl_i.cyrus = cyrussasl.server_new(service_name, nil, realm, nil, nil)
+
+	local st, ret = pcall(cyrussasl.server_new, service_name, nil, realm, nil, nil)
+	if st then
+		sasl_i.cyrus = ret;
+	else
+		log("error", "server_new failed: %s", ret);
+		return nil;
+	end
 
 	if cyrussasl.set_canon_cb then
 		local c14n_cb = function (user)
@@ -63,10 +70,6 @@
 		cyrussasl.set_canon_cb(sasl_i.cyrus, c14n_cb);
 	end
 
-	if sasl_i.cyrus == 0 then
-		log("error", "got NULL return value from server_new")
-		return nil;
-	end
 	cyrussasl.setssf(sasl_i.cyrus, 0, 0xffffffff)
 	local s = setmetatable(sasl_i, method);
 	return s;

mercurial