[pacman-dev] [PATCH] register_syncdb: reject db names that contain /

Andrew Gregory andrew.gregory.8 at gmail.com
Sat Apr 26 19:24:55 EDT 2014


alpm downloads databases based on basename causing [foo] and [bar/foo]
to silently overwrite each other.

Also remove an extra tab

Signed-off-by: Andrew Gregory <andrew.gregory.8 at gmail.com>
---
 lib/libalpm/db.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/lib/libalpm/db.c b/lib/libalpm/db.c
index dacc084..b4f3519 100644
--- a/lib/libalpm/db.c
+++ b/lib/libalpm/db.c
@@ -52,12 +52,13 @@ alpm_db_t SYMEXPORT *alpm_register_syncdb(alpm_handle_t *handle,
 	CHECK_HANDLE(handle, return NULL);
 	ASSERT(treename != NULL && strlen(treename) != 0,
 			RET_ERR(handle, ALPM_ERR_WRONG_ARGS, NULL));
+	ASSERT(!strchr(treename, '/'), RET_ERR(handle, ALPM_ERR_WRONG_ARGS, NULL));
 	/* Do not register a database if a transaction is on-going */
 	ASSERT(handle->trans == NULL, RET_ERR(handle, ALPM_ERR_TRANS_NOT_NULL, NULL));
 
 	/* ensure database name is unique */
 	if(strcmp(treename, "local") == 0) {
-			RET_ERR(handle, ALPM_ERR_DB_NOT_NULL, NULL);
+		RET_ERR(handle, ALPM_ERR_DB_NOT_NULL, NULL);
 	}
 	for(i = handle->dbs_sync; i; i = i->next) {
 		alpm_db_t *d = i->data;
-- 
1.9.2



More information about the pacman-dev mailing list