diff options
author | joerg <joerg@pkgsrc.org> | 2009-02-11 23:51:30 +0000 |
---|---|---|
committer | joerg <joerg@pkgsrc.org> | 2009-02-11 23:51:30 +0000 |
commit | f6da77786ce001653a16eb359cecedcefd22fe5a (patch) | |
tree | af3e7aa5a423bc97fa96eb0288df5a2d289e3563 /pkgtools/pkg_install | |
parent | 52e03c25de476e657ebbbd1e565e22ec1f07cca7 (diff) | |
download | pkgsrc-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')
-rw-r--r-- | pkgtools/pkg_install/files/info/perform.c | 19 | ||||
-rw-r--r-- | pkgtools/pkg_install/files/info/show.c | 9 |
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; |