diff options
author | Timo Teräs <timo.teras@iki.fi> | 2017-10-04 16:56:07 +0300 |
---|---|---|
committer | Timo Teräs <timo.teras@iki.fi> | 2017-10-06 16:20:04 +0300 |
commit | 123db1d3d7a9ede20261c6345e714967d0dc4497 (patch) | |
tree | 1aa3764922a8c77535d45828fc499671b5c6693f | |
parent | 8562c2825c503991c4e36f291b89affae94bc172 (diff) | |
download | apk-tools-123db1d3d7a9ede20261c6345e714967d0dc4497.tar.gz apk-tools-123db1d3d7a9ede20261c6345e714967d0dc4497.tar.bz2 apk-tools-123db1d3d7a9ede20261c6345e714967d0dc4497.tar.xz apk-tools-123db1d3d7a9ede20261c6345e714967d0dc4497.zip |
package: remove package script after use (fixes #7974)
this is a regression introduced in commit 349c61c9
("add support for pre and post commit hooks")
-rw-r--r-- | src/package.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/src/package.c b/src/package.c index fe859ed..492031b 100644 --- a/src/package.c +++ b/src/package.c @@ -1012,21 +1012,24 @@ void apk_ipkg_run_script(struct apk_installed_package *ipkg, if (fd < 0) { mkdirat(root_fd, "var/cache/misc", 0755); fd = openat(root_fd, fn, O_CREAT|O_RDWR|O_TRUNC|O_CLOEXEC, 0755); - if (fd < 0) - goto error; + if (fd < 0) goto err_log; } if (write(fd, ipkg->script[type].ptr, ipkg->script[type].len) < 0) { close(fd); - goto error; + goto err_log; } close(fd); if (apk_db_run_script(db, fn, argv) < 0) - ipkg->broken_script = 1; - return; -error: + goto err; + goto cleanup; + +err_log: apk_error("%s: failed to execute: %s", &fn[15], apk_error_str(errno)); +err: ipkg->broken_script = 1; +cleanup: + unlinkat(root_fd, fn, 0); } static int parse_index_line(void *ctx, apk_blob_t line) |