From dd694f433b0848a04ae72e771086b1bcd8b9a4e9 Mon Sep 17 00:00:00 2001 From: Andrew Gregory Date: Sat, 26 Apr 2014 19:24:55 -0400 Subject: register_syncdb: reject db names that contain / 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 Signed-off-by: Allan McRae --- lib/libalpm/db.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'lib') diff --git a/lib/libalpm/db.c b/lib/libalpm/db.c index b9cbed76..466c96f1 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; -- cgit v1.2.3-70-g09d2