Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
Properly test the return for format_exec_cmd
Baptiste Daroussin committed 11 years ago
commit 21e85f095c3361f6a1422de2d16b601d1cea2488
parent 34069dc
2 files changed +18 -13
modified libpkg/pkg_ports.c
@@ -884,43 +884,49 @@ apply_keyword_file(ucl_object_t *obj, struct plist *p, char *line, struct file_a
		parse_attributes(o, attr != NULL ? &attr : &freeattr);

	if ((o = ucl_object_find_key(obj, "pre-install"))) {
-
		format_exec_cmd(&cmd, ucl_object_tostring(o), p->prefix,
-
		    p->last_file, line, argc, args);
+
		if (format_exec_cmd(&cmd, ucl_object_tostring(o), p->prefix,
+
		    p->last_file, line, argc, args) != EPKG_OK)
+
			return (EPKG_FATAL);
		sbuf_printf(p->pre_install_buf, "%s\n", cmd);
		free(cmd);
	}

	if ((o = ucl_object_find_key(obj, "post-install"))) {
-
		format_exec_cmd(&cmd, ucl_object_tostring(o), p->prefix,
-
		    p->last_file, line, argc, args);
+
		if (format_exec_cmd(&cmd, ucl_object_tostring(o), p->prefix,
+
		    p->last_file, line, argc, args) != EPKG_OK)
+
			return (EPKG_FATAL);
		sbuf_printf(p->post_install_buf, "%s\n", cmd);
		free(cmd);
	}

	if ((o = ucl_object_find_key(obj, "pre-deinstall"))) {
-
		format_exec_cmd(&cmd, ucl_object_tostring(o), p->prefix,
-
		    p->last_file, line, argc, args);
+
		if (format_exec_cmd(&cmd, ucl_object_tostring(o), p->prefix,
+
		    p->last_file, line, argc, args) != EPKG_OK)
+
			return (EPKG_FATAL);
		sbuf_printf(p->pre_deinstall_buf, "%s\n", cmd);
		free(cmd);
	}

	if ((o = ucl_object_find_key(obj, "post-deinstall"))) {
-
		format_exec_cmd(&cmd, ucl_object_tostring(o), p->prefix,
-
		    p->last_file, line, argc, args);
+
		if (format_exec_cmd(&cmd, ucl_object_tostring(o), p->prefix,
+
		    p->last_file, line, argc, args) != EPKG_OK)
+
			return (EPKG_FATAL);
		sbuf_printf(p->post_deinstall_buf, "%s\n", cmd);
		free(cmd);
	}

	if ((o = ucl_object_find_key(obj, "pre-upgrade"))) {
-
		format_exec_cmd(&cmd, ucl_object_tostring(o), p->prefix,
-
		    p->last_file, line, argc, args);
+
		if (format_exec_cmd(&cmd, ucl_object_tostring(o), p->prefix,
+
		    p->last_file, line, argc, args) != EPKG_OK)
+
			return (EPKG_FATAL);
		sbuf_printf(p->pre_deinstall_buf, "%s\n", cmd);
		free(cmd);
	}

	if ((o = ucl_object_find_key(obj, "post-upgrade"))) {
-
		format_exec_cmd(&cmd, ucl_object_tostring(o), p->prefix,
-
		    p->last_file, line, argc, args);
+
		if (format_exec_cmd(&cmd, ucl_object_tostring(o), p->prefix,
+
		    p->last_file, line, argc, args) != EPKG_OK)
+
			return (EPKG_FATAL);
		sbuf_printf(p->post_deinstall_buf, "%s\n", cmd);
		free(cmd);
	}
modified libpkg/utils.c
@@ -334,7 +334,6 @@ format_exec_cmd(char **dest, const char *in, const char *prefix,
					    " available", pos, argc);
					sbuf_finish(buf);
					sbuf_free(buf);
-

					return (EPKG_FATAL);
				}
				sbuf_cat(buf, argv[pos -1]);