Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
audit: Drop privileges after opening the files/database but before parsing.
Bryan Drewery committed 8 years ago
commit c239d131dc920d6f3dead18a8e9a772372fe9578
parent 189abfb
3 files changed +7 -2
modified libpkg/pkg_audit.c
@@ -884,6 +884,9 @@ pkg_audit_load(struct pkg_audit *audit, const char *fname)
int
pkg_audit_process(struct pkg_audit *audit)
{
+
	if (geteuid() == 0)
+
		return (EPKG_FATAL);
+

	if (!audit->loaded)
		return (EPKG_FATAL);

modified src/audit.c
@@ -166,7 +166,6 @@ exec_audit(int argc, char **argv)
		}
	}

-
	drop_privileges();
	if (pkg_audit_load(audit, audit_file) != EPKG_OK) {
		if (errno == ENOENT)
			warnx("vulnxml file %s does not exist. "
@@ -263,6 +262,8 @@ exec_audit(int argc, char **argv)
		}
	}

+
	drop_privileges();
+

	/* Now we have vulnxml loaded and check list formed */
#ifdef HAVE_CAPSICUM
	if (cap_enter() < 0 && errno != ENOSYS) {
modified src/upgrade.c
@@ -124,7 +124,6 @@ check_vulnerable(struct pkg_audit *audit, struct pkgdb *db, int sock)
		return;
	}

-
	drop_privileges();

	if (pkg_audit_load(audit, NULL) != EPKG_OK) {
		warn("unable to open vulnxml file");
@@ -133,6 +132,8 @@ check_vulnerable(struct pkg_audit *audit, struct pkgdb *db, int sock)
		return;
	}

+
	drop_privileges();
+

#ifdef HAVE_CAPSICUM
	if (cap_enter() < 0 && errno != ENOSYS) {
		warn("cap_enter() failed");