diff --git a/src/lib-sieve/sieve-script.c b/src/lib-sieve/sieve-script.c
index 11e7b6635f3160a989db23decd17fcaa8b103419..11f934d9a4b9967bfc237b1c7c398f468ef3960a 100644
--- a/src/lib-sieve/sieve-script.c
+++ b/src/lib-sieve/sieve-script.c
@@ -400,6 +400,8 @@ int sieve_script_get_stream(struct sieve_script *script,
 int sieve_script_cmp(const struct sieve_script *script1,
 		     const struct sieve_script *script2)
 {
+	int ret;
+
 	if (script1 == script2)
 		return 0;
 	if (script1 == NULL || script2 == NULL)
@@ -410,7 +412,11 @@ int sieve_script_cmp(const struct sieve_script *script1,
 	if (script1->v.cmp == NULL) {
 		i_assert (script1->location != NULL && script2->location != NULL);
 
-		return strcmp(script1->location, script2->location);
+		ret = strcmp(script1->location, script2->location);
+		if (ret != 0)
+			return (ret < 0 ? -1 : 1);
+
+		return null_strcmp(script1->name, script2->name);
 	}
 
 	return script1->v.cmp(script1, script2);
diff --git a/src/lib-sieve/storage/dict/sieve-dict-script.c b/src/lib-sieve/storage/dict/sieve-dict-script.c
index 4448c003fd08bb882876beec91fbdd1fbc6b81e2..6ccac8ebbc83ad8743062a420cbed50dddd238a5 100644
--- a/src/lib-sieve/storage/dict/sieve-dict-script.c
+++ b/src/lib-sieve/storage/dict/sieve-dict-script.c
@@ -238,26 +238,6 @@ sieve_dict_script_binary_save(struct sieve_script *script,
 		update, 0600);
 }
 
-static int
-sieve_dict_script_cmp(const struct sieve_script *script,
-		      const struct sieve_script *other)
-{
-	struct sieve_storage *storage = script->storage;
-	struct sieve_storage *sother = other->storage;
-	int ret;
-
-	ret = strcmp(storage->location, sother->location);
-	if (ret != 0)
-		return (ret < 0 ? -1 : 1);
-
-	i_assert(script->name != NULL && other->name != NULL);
-
-	ret = strcmp(script->name, other->name);
-	if (ret != 0)
-		return (ret < 0 ? -1 : 1);
-	return 0;
-}
-
 const struct sieve_script sieve_dict_script = {
 	.driver_name = SIEVE_DICT_STORAGE_DRIVER_NAME,
 	.v = {
@@ -272,8 +252,6 @@ const struct sieve_script sieve_dict_script = {
 		.binary_dump_metadata = sieve_dict_script_binary_dump_metadata,
 		.binary_load = sieve_dict_script_binary_load,
 		.binary_save = sieve_dict_script_binary_save,
-
-		.cmp = sieve_dict_script_cmp,
 	},
 };
 
diff --git a/src/lib-sieve/storage/file/sieve-file-script.c b/src/lib-sieve/storage/file/sieve-file-script.c
index ac2b0eb46fd77f62bbafd03046e96e57cbb4c63a..cb53e3bf06e40c583978c3b3171920db820b2e35 100644
--- a/src/lib-sieve/storage/file/sieve-file-script.c
+++ b/src/lib-sieve/storage/file/sieve-file-script.c
@@ -824,8 +824,7 @@ sieve_file_script_cmp(const struct sieve_script *script1,
 		if (ret != 0)
 			return ret;
 
-		i_assert(script1->name != NULL && script2->name != NULL);
-		return strcmp(script1->name, script2->name);
+		return null_strcmp(script1->name, script2->name);
 	}
 
 	if (major(fscript1->st.st_dev) != major(fscript2->st.st_dev)) {
diff --git a/src/lib-sieve/storage/ldap/sieve-ldap-script.c b/src/lib-sieve/storage/ldap/sieve-ldap-script.c
index 1ee543a5d3a7efdeb1c8d5c1181fbb78cf0325f4..f1d7b177a1216b0b820573fe9a7a65f2380dae14 100644
--- a/src/lib-sieve/storage/ldap/sieve-ldap-script.c
+++ b/src/lib-sieve/storage/ldap/sieve-ldap-script.c
@@ -262,20 +262,6 @@ sieve_ldap_script_binary_save(struct sieve_script *script,
 		update, 0600);
 }
 
-static int
-sieve_ldap_script_cmp(const struct sieve_script *script1,
-		      const struct sieve_script *script2)
-{
-	int ret;
-
-	i_assert(script1->name != NULL && script2->name != NULL);
-
-	ret = strcmp(script1->name, script2->name);
-	if (ret != 0)
-		return (ret > 0 ? 1 : -1);
-	return 0;
-}
-
 const struct sieve_script sieve_ldap_script = {
 	.driver_name = SIEVE_LDAP_STORAGE_DRIVER_NAME,
 	.v = {
@@ -289,8 +275,6 @@ const struct sieve_script sieve_ldap_script = {
 		.binary_dump_metadata = sieve_ldap_script_binary_dump_metadata,
 		.binary_load = sieve_ldap_script_binary_load,
 		.binary_save = sieve_ldap_script_binary_save,
-
-		.cmp = sieve_ldap_script_cmp,
 	},
 };