pkgsrc-Changes archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
CVS commit: pkgsrc/pkgtools/pkg_install/files/lib
Module Name: pkgsrc
Committed By: wiz
Date: Tue Feb 18 11:53:49 UTC 2025
Modified Files:
pkgsrc/pkgtools/pkg_install/files/lib: pkg_signature.c
Log Message:
pkg_install: Avoid pkg_admin gpg-sign-package hang.
Previously would infinite loop if the input package size was an exact
multiple of 64KB.
>From Jonathan Perkin <jperkin%smartos.org@localhost>
via drecklypkg commit $b70ba6d6bfedf447d37e3ef53958d812534b06bb
To generate a diff of this commit:
cvs rdiff -u -r1.13 -r1.14 \
pkgsrc/pkgtools/pkg_install/files/lib/pkg_signature.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: pkgsrc/pkgtools/pkg_install/files/lib/pkg_signature.c
diff -u pkgsrc/pkgtools/pkg_install/files/lib/pkg_signature.c:1.13 pkgsrc/pkgtools/pkg_install/files/lib/pkg_signature.c:1.14
--- pkgsrc/pkgtools/pkg_install/files/lib/pkg_signature.c:1.13 Wed Apr 19 21:42:50 2017
+++ pkgsrc/pkgtools/pkg_install/files/lib/pkg_signature.c Tue Feb 18 11:53:49 2025
@@ -1,4 +1,4 @@
-/* $NetBSD: pkg_signature.c,v 1.13 2017/04/19 21:42:50 joerg Exp $ */
+/* $NetBSD: pkg_signature.c,v 1.14 2025/02/18 11:53:49 wiz Exp $ */
#if HAVE_CONFIG_H
#include "config.h"
@@ -7,7 +7,7 @@
#if HAVE_SYS_CDEFS_H
#include <sys/cdefs.h>
#endif
-__RCSID("$NetBSD: pkg_signature.c,v 1.13 2017/04/19 21:42:50 joerg Exp $");
+__RCSID("$NetBSD: pkg_signature.c,v 1.14 2025/02/18 11:53:49 wiz Exp $");
/*-
* Copyright (c) 2008 Joerg Sonnenberger <joerg%NetBSD.org@localhost>.
@@ -631,17 +631,18 @@ pkg_sign_gpg(const char *name, const cha
entry = archive_entry_new();
archive_entry_copy_stat(entry, &sb);
+ size = archive_entry_size(entry);
pkgname = extract_pkgname(fd);
- hash_file = xasprintf(hash_template, pkgname,
- (long long)archive_entry_size(entry));
+ hash_file = xasprintf(hash_template, pkgname, size);
free(pkgname);
- for (i = 0; i < archive_entry_size(entry); i += block_len) {
- if (i + (off_t)sizeof(block) < archive_entry_size(entry))
+ for (i = 0; i < size; i += block_len) {
+ if (i + (off_t)sizeof(block) < size)
block_len = sizeof(block);
else
- block_len = archive_entry_size(entry) % sizeof(block);
+ block_len = size % sizeof(block) ?
+ size % sizeof(block) : sizeof(block);
if (read(fd, block, block_len) != (ssize_t)block_len)
err(2, "short read");
hash_block(block, block_len, hash);
@@ -682,14 +683,13 @@ pkg_sign_gpg(const char *name, const cha
archive_write_finish_entry(pkg);
archive_entry_free(sign_entry);
- size = archive_entry_size(entry);
archive_write_header(pkg, entry);
for (i = 0; i < size; i += block_len) {
if (i + (off_t)sizeof(block) < size)
block_len = sizeof(block);
else
- block_len = size % sizeof(block);
+ block_len = size % sizeof(block) ? size % sizeof(block) : sizeof(block);
if (read(fd, block, block_len) != (ssize_t)block_len)
err(2, "short read");
archive_write_data(pkg, block, block_len);
Home |
Main Index |
Thread Index |
Old Index