summaryrefslogtreecommitdiff
path: root/pkgtools/pkg_install/files/info
diff options
context:
space:
mode:
authorjoerg <joerg@pkgsrc.org>2009-02-11 23:51:30 +0000
committerjoerg <joerg@pkgsrc.org>2009-02-11 23:51:30 +0000
commitf6da77786ce001653a16eb359cecedcefd22fe5a (patch)
treeaf3e7aa5a423bc97fa96eb0288df5a2d289e3563 /pkgtools/pkg_install/files/info
parent52e03c25de476e657ebbbd1e565e22ec1f07cca7 (diff)
downloadpkgsrc-f6da77786ce001653a16eb359cecedcefd22fe5a.tar.gz
Don't segfault if running pkg_info on a binary package without
+BUILD_INFO (or installed without +INSTALLED_INFO). Second half of PR 30276.
Diffstat (limited to 'pkgtools/pkg_install/files/info')
-rw-r--r--pkgtools/pkg_install/files/info/perform.c19
-rw-r--r--pkgtools/pkg_install/files/info/show.c9
2 files changed, 19 insertions, 9 deletions
diff --git a/pkgtools/pkg_install/files/info/perform.c b/pkgtools/pkg_install/files/info/perform.c
index a64c3f807b3..a569cae0253 100644
--- a/pkgtools/pkg_install/files/info/perform.c
+++ b/pkgtools/pkg_install/files/info/perform.c
@@ -1,4 +1,4 @@
-/* $NetBSD: perform.c,v 1.49 2009/02/02 12:35:01 joerg Exp $ */
+/* $NetBSD: perform.c,v 1.50 2009/02/11 23:51:30 joerg Exp $ */
#if HAVE_CONFIG_H
#include "config.h"
@@ -13,7 +13,7 @@
#if HAVE_SYS_WAIT_H
#include <sys/wait.h>
#endif
-__RCSID("$NetBSD: perform.c,v 1.49 2009/02/02 12:35:01 joerg Exp $");
+__RCSID("$NetBSD: perform.c,v 1.50 2009/02/11 23:51:30 joerg Exp $");
/*-
* Copyright (c) 2008 Joerg Sonnenberger <joerg@NetBSD.org>.
@@ -363,10 +363,17 @@ pkg_do(const char *pkg)
show_index(meta->meta_comment, tmp);
} else if (Flags & SHOW_BI_VAR) {
if (strcspn(BuildInfoVariable, "ABCDEFGHIJKLMNOPQRSTUVWXYZ")
- == strlen(BuildInfoVariable))
- show_var(meta->meta_installed_info, BuildInfoVariable);
- else
- show_var(meta->meta_build_info, BuildInfoVariable);
+ == strlen(BuildInfoVariable)) {
+ if (meta->meta_installed_info)
+ show_var(meta->meta_installed_info, BuildInfoVariable);
+ else
+ warnx("Installation information missing");
+ } else {
+ if (meta->meta_build_info)
+ show_var(meta->meta_build_info, BuildInfoVariable);
+ else
+ warnx("Build information missing");
+ }
} else {
package_t plist;
diff --git a/pkgtools/pkg_install/files/info/show.c b/pkgtools/pkg_install/files/info/show.c
index b95cee60b1b..c3d6f6f873c 100644
--- a/pkgtools/pkg_install/files/info/show.c
+++ b/pkgtools/pkg_install/files/info/show.c
@@ -1,4 +1,4 @@
-/* $NetBSD: show.c,v 1.23 2009/02/02 12:35:01 joerg Exp $ */
+/* $NetBSD: show.c,v 1.24 2009/02/11 23:51:30 joerg Exp $ */
#if HAVE_CONFIG_H
#include "config.h"
@@ -7,7 +7,7 @@
#if HAVE_SYS_CDEFS_H
#include <sys/cdefs.h>
#endif
-__RCSID("$NetBSD: show.c,v 1.23 2009/02/02 12:35:01 joerg Exp $");
+__RCSID("$NetBSD: show.c,v 1.24 2009/02/11 23:51:30 joerg Exp $");
/*
* FreeBSD install - a package for the installation and maintainance
@@ -366,7 +366,10 @@ show_summary(struct pkg_meta *meta, package_t *plist, const char *binpkgfile)
print_string_as_var("COMMENT", meta->meta_comment);
print_string_as_var("SIZE_PKG", meta->meta_size_pkg);
- var_copy_list(meta->meta_build_info, bi_vars);
+ if (meta->meta_build_info)
+ var_copy_list(meta->meta_build_info, bi_vars);
+ else
+ warnx("Build information missing");
if (binpkgfile != NULL && stat(binpkgfile, &st) == 0) {
const char *base;