Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
Fix pkg_is_valid, test if package is valid before creation and registration
Baptiste Daroussin committed 13 years ago
commit c04f3b9848bd00bd99624126bc8689663bd6ec20
parent ada5134
3 files changed +11 -1
modified libpkg/pkg.c
@@ -165,10 +165,11 @@ pkg_is_valid(struct pkg *pkg)

	for (i = 0; i < PKG_NUM_FIELDS; i++) {
		if (fields[i].type & pkg->type && fields[i].optional == 0) {
-
			if (pkg->fields[i] == NULL || sbuf_get(pkg->fields[i])[0] == '\0')
+
			if (pkg->fields[i] == NULL || sbuf_get(pkg->fields[i])[0] == '\0') {
				pkg_emit_error("package field incomplete: %s",
				    fields[i].human_desc);
				return (EPKG_FATAL);
+
			}
		}
	}

modified libpkg/pkg_create.c
@@ -52,6 +52,10 @@ pkg_create_from_dir(struct pkg *pkg, const char *root, struct packing *pkg_archi
	struct stat st;
	char sha256[SHA256_DIGEST_LENGTH * 2 + 1];

+
	if (pkg_is_valid(pkg) != EPKG_OK) {
+
		pkg_emit_error("the package is not valid");
+
		return (EPKG_FATAL);
+
	}
	/*
	 * if the checksum is not provided in the manifest recompute it
	 */
modified libpkg/pkgdb.c
@@ -1538,6 +1538,11 @@ pkgdb_register_pkg(struct pkgdb *db, struct pkg *pkg, int complete)

	assert(db != NULL);

+
	if (pkg_is_valid(pkg) != EPKG_OK) {
+
		pkg_emit_error("the package is not valid");
+
		return (EPKG_FATAL);
+
	}
+

	s = db->sqlite;

	if (!complete && sql_exec(s, "BEGIN;") != EPKG_OK)