changeset 14959:c3e487d82df7

fts-solr: Don't crash if fts_solr setting is invalid.
author Timo Sirainen <tss@iki.fi>
date Tue, 23 Apr 2013 13:46:29 +0300
parents d044963bf65c
children 0fa68f3a8f6c
files src/plugins/fts-solr/fts-backend-solr-old.c src/plugins/fts-solr/fts-backend-solr.c
diffstat 2 files changed, 19 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/src/plugins/fts-solr/fts-backend-solr-old.c	Tue Apr 23 13:33:12 2013 +0300
+++ b/src/plugins/fts-solr/fts-backend-solr-old.c	Tue Apr 23 13:46:29 2013 +0300
@@ -226,16 +226,21 @@
 }
 
 static int
-fts_backend_solr_init(struct fts_backend *_backend,
-		      const char **error_r ATTR_UNUSED)
+fts_backend_solr_init(struct fts_backend *_backend, const char **error_r)
 {
 	struct solr_fts_backend *backend = (struct solr_fts_backend *)_backend;
 	struct fts_solr_user *fuser = FTS_SOLR_USER_CONTEXT(_backend->ns->user);
-	const struct fts_solr_settings *set = &fuser->set;
 	const char *str;
 
-	if (solr_conn == NULL)
-		solr_conn = solr_connection_init(set->url, set->debug);
+	if (fuser == NULL) {
+		*error_r = "Invalid fts_solr setting";
+		return -1;
+	}
+
+	if (solr_conn == NULL) {
+		solr_conn = solr_connection_init(fuser->set.url,
+						 fuser->set.debug);
+	}
 
 	str = solr_escape_id_str(_backend->ns->user->username);
 	backend->id_username = i_strdup(str);
--- a/src/plugins/fts-solr/fts-backend-solr.c	Tue Apr 23 13:33:12 2013 +0300
+++ b/src/plugins/fts-solr/fts-backend-solr.c	Tue Apr 23 13:46:29 2013 +0300
@@ -156,14 +156,18 @@
 }
 
 static int
-fts_backend_solr_init(struct fts_backend *_backend,
-		      const char **error_r ATTR_UNUSED)
+fts_backend_solr_init(struct fts_backend *_backend, const char **error_r)
 {
 	struct fts_solr_user *fuser = FTS_SOLR_USER_CONTEXT(_backend->ns->user);
-	const struct fts_solr_settings *set = &fuser->set;
 
-	if (solr_conn == NULL)
-		solr_conn = solr_connection_init(set->url, set->debug);
+	if (fuser == NULL) {
+		*error_r = "Invalid fts_solr setting";
+		return -1;
+	}
+	if (solr_conn == NULL) {
+		solr_conn = solr_connection_init(fuser->set.url,
+						 fuser->set.debug);
+	}
 	return 0;
 }