This is an automated email from the git hooks/post-receive script. guillem pushed a commit to branch main in repository dpkg.
View the commit online: https://git.dpkg.org/cgit/dpkg/dpkg.git/commit/?id=fe1c99810a21e24b7ec0bcc8dfd82488cf30c6dc commit fe1c99810a21e24b7ec0bcc8dfd82488cf30c6dc Author: Guillem Jover <guil...@debian.org> AuthorDate: Fri Sep 1 03:53:31 2023 +0200 Use varbuf_str() instead of direct access Replace any access that can result in an uninitialized buf member, in case it only gets conditionally added strings to it. We might do a second pass for the remaining read-only accesses in the future. Changelog: internal --- lib/dpkg/dump.c | 4 ++-- lib/dpkg/pkg-format.c | 5 ++--- lib/dpkg/pkg-show.c | 4 ++-- lib/dpkg/t/t-arch.c | 12 ++++-------- lib/dpkg/t/t-pkg-format.c | 2 +- lib/dpkg/varbuf.c | 5 +---- src/deb/info.c | 8 ++++---- src/divert/main.c | 4 ++-- src/main/archives.c | 12 +++++++----- src/main/configure.c | 8 ++++---- src/main/depcon.c | 2 +- src/main/packages.c | 5 +++-- src/main/remove.c | 4 ++-- src/main/script.c | 2 +- src/main/select.c | 10 ++++++---- src/main/trigproc.c | 8 +++++--- src/main/unpack.c | 24 ++++++++++++------------ src/main/verify.c | 2 +- src/statoverride/main.c | 6 +++--- 19 files changed, 63 insertions(+), 64 deletions(-) diff --git a/lib/dpkg/dump.c b/lib/dpkg/dump.c index b27e5db90..ab9639dd2 100644 --- a/lib/dpkg/dump.c +++ b/lib/dpkg/dump.c @@ -486,7 +486,7 @@ write_stanza(FILE *file, const char *filename, varbuf_stanza(&vb, pkg, pkgbin); varbuf_end_str(&vb); - if (fputs(vb.buf, file) < 0) + if (fputs(varbuf_str(&vb), file) < 0) ohshite(_("failed to write details of '%.50s' to '%.250s'"), pkgbin_name_const(pkg, pkgbin, pnaw_nonambig), filename); @@ -525,7 +525,7 @@ writedb_stanzas(FILE *fp, const char *filename, enum writedb_flags flags) varbuf_stanza(&vb, pkg, pkgbin); varbuf_add_char(&vb, '\n'); varbuf_end_str(&vb); - if (fputs(vb.buf, fp) < 0) + if (fputs(varbuf_str(&vb), fp) < 0) ohshite(_("failed to write %s database stanza about '%s' to '%s'"), which, pkgbin_name(pkg, pkgbin, pnaw_nonambig), filename); varbuf_reset(&vb); diff --git a/lib/dpkg/pkg-format.c b/lib/dpkg/pkg-format.c index b98401217..5ab995191 100644 --- a/lib/dpkg/pkg-format.c +++ b/lib/dpkg/pkg-format.c @@ -428,8 +428,7 @@ pkg_format_print(struct varbuf *vb, const struct pkg_format_node *head, if (fip) { fip->wcall(&wb, pkg, pkgbin, 0, fip); - varbuf_end_str(&wb); - pkg_format_item(&fb, node, wb.buf); + pkg_format_item(&fb, node, varbuf_str(&wb)); varbuf_reset(&wb); ok = true; } else { @@ -449,7 +448,7 @@ pkg_format_print(struct varbuf *vb, const struct pkg_format_node *head, if ((width != 0) && (len > width)) len = width; - varbuf_add_buf(vb, fb.buf, len); + varbuf_add_buf(vb, varbuf_str(&fb), len); varbuf_end_str(vb); } diff --git a/lib/dpkg/pkg-show.c b/lib/dpkg/pkg-show.c index 038343ce5..a29872258 100644 --- a/lib/dpkg/pkg-show.c +++ b/lib/dpkg/pkg-show.c @@ -436,9 +436,9 @@ pkg_source_version(struct dpkg_version *version, varbuf_add_buf(&vb, version_str, len); varbuf_end_str(&vb); - if (parseversion(version, vb.buf, &err) < 0) + if (parseversion(version, varbuf_str(&vb), &err) < 0) ohshit(_("version '%s' has bad syntax: %s"), - vb.buf, err.str); + varbuf_str(&vb), err.str); varbuf_destroy(&vb); } diff --git a/lib/dpkg/t/t-arch.c b/lib/dpkg/t/t-arch.c index d0b5735cb..f2f7c7f7a 100644 --- a/lib/dpkg/t/t-arch.c +++ b/lib/dpkg/t/t-arch.c @@ -170,23 +170,19 @@ test_dpkg_arch_varbuf_archqual(void) struct varbuf vb = VARBUF_INIT; varbuf_add_archqual(&vb, dpkg_arch_get(DPKG_ARCH_NONE)); - varbuf_end_str(&vb); - test_str(vb.buf, ==, ""); + test_str(varbuf_str(&vb), ==, ""); varbuf_reset(&vb); varbuf_add_archqual(&vb, dpkg_arch_get(DPKG_ARCH_EMPTY)); - varbuf_end_str(&vb); - test_str(vb.buf, ==, ""); + test_str(varbuf_str(&vb), ==, ""); varbuf_reset(&vb); varbuf_add_archqual(&vb, dpkg_arch_get(DPKG_ARCH_ALL)); - varbuf_end_str(&vb); - test_str(vb.buf, ==, ":all"); + test_str(varbuf_str(&vb), ==, ":all"); varbuf_reset(&vb); varbuf_add_archqual(&vb, dpkg_arch_get(DPKG_ARCH_WILDCARD)); - varbuf_end_str(&vb); - test_str(vb.buf, ==, ":any"); + test_str(varbuf_str(&vb), ==, ":any"); varbuf_reset(&vb); varbuf_destroy(&vb); diff --git a/lib/dpkg/t/t-pkg-format.c b/lib/dpkg/t/t-pkg-format.c index 81e7ddbaf..c3afe1cfd 100644 --- a/lib/dpkg/t/t-pkg-format.c +++ b/lib/dpkg/t/t-pkg-format.c @@ -63,7 +63,7 @@ test_field(struct pkginfo *pkg, const char *fmt, const char *exp) head = pkg_format_parse(fmt, NULL); test_pass(head); pkg_format_print(&vb, head, pkg, &pkg->installed); - test_str(vb.buf, ==, exp); + test_str(varbuf_str(&vb), ==, exp); pkg_format_free(head); varbuf_destroy(&vb); } diff --git a/lib/dpkg/varbuf.c b/lib/dpkg/varbuf.c index 61ac59582..e314692ac 100644 --- a/lib/dpkg/varbuf.c +++ b/lib/dpkg/varbuf.c @@ -242,10 +242,7 @@ varbuf_rollback_start(struct varbuf_state *vs) if (vs->used) internerr("varbuf buf(NULL) state_used(%zu) > 0", vs->used); - /* XXX: Ideally this would be handled by varbuf always having - * a valid buf or switching all users to the getter, but for - * now this will do. */ - return ""; + return varbuf_str(vs->v); } return vs->v->buf + vs->used; } diff --git a/src/deb/info.c b/src/deb/info.c index 659866323..721ca9f32 100644 --- a/src/deb/info.c +++ b/src/deb/info.c @@ -93,11 +93,11 @@ info_spew(const char *debar, const char *dir, const char *const *argv) varbuf_reset(&controlfile); varbuf_printf(&controlfile, "%s/%s", dir, component); - fd = open(controlfile.buf, O_RDONLY); + fd = open(varbuf_str(&controlfile), O_RDONLY); if (fd >= 0) { if (fd_fd_copy(fd, 1, -1, &err) < 0) ohshit(_("cannot extract control file '%s' from '%s': %s"), - controlfile.buf, debar, err.str); + varbuf_str(&controlfile), debar, err.str); close(fd); } else if (errno == ENOENT) { notice(_("'%.255s' contains no control component '%.255s'"), @@ -262,9 +262,9 @@ info_field(const char *debar, const char *dir, const char *const *fields, varbuf_end_str(&str); if (fieldflags & fw_printheader) - printf("%s", str.buf); + printf("%s", varbuf_str(&str)); else - printf("%s\n", str.buf); + printf("%s\n", varbuf_str(&str)); } m_output(stdout, _("<standard output>")); diff --git a/src/divert/main.c b/src/divert/main.c index 23a0cd07e..f709b948a 100644 --- a/src/divert/main.c +++ b/src/divert/main.c @@ -329,7 +329,7 @@ varbuf_diversion(struct varbuf *str, const char *pkgname, filename, divertto, pkgname); } - return str->buf; + return varbuf_str(str); } static const char * @@ -349,7 +349,7 @@ diversion_current(const char *filename) return varbuf_diversion(&str, opt_pkgname, filename, opt_divertto); } - return str.buf; + return varbuf_str(&str); } static const char * diff --git a/src/main/archives.c b/src/main/archives.c index 7e399f922..12893c4c2 100644 --- a/src/main/archives.c +++ b/src/main/archives.c @@ -1336,7 +1336,7 @@ void check_breaks(struct dependency *dep, struct pkginfo *pkg, pkg_name(fixbydeconf, pnaw_nonambig), pkgbin_name(pkg, &pkg->available, pnaw_nonambig)); - ok = try_deconfigure_can(fixbydeconf, dep->list, pkg, why.buf); + ok = try_deconfigure_can(fixbydeconf, dep->list, pkg, varbuf_str(&why)); if (ok == 1) { notice(_("yes, will deconfigure %s (broken by %s)"), pkg_name(fixbydeconf, pnaw_nonambig), @@ -1344,7 +1344,8 @@ void check_breaks(struct dependency *dep, struct pkginfo *pkg, } } else { notice(_("regarding %s containing %s:\n%s"), pfilename, - pkgbin_name(pkg, &pkg->available, pnaw_nonambig), why.buf); + pkgbin_name(pkg, &pkg->available, pnaw_nonambig), + varbuf_str(&why)); ok= 0; } varbuf_destroy(&why); @@ -1416,7 +1417,7 @@ void check_conflict(struct dependency *dep, struct pkginfo *pkg, if (depisok(pdep->up, &removalwhy, NULL, NULL, false)) continue; varbuf_end_str(&removalwhy); - if (!try_remove_can(pdep,fixbyrm,removalwhy.buf)) + if (!try_remove_can(pdep, fixbyrm, varbuf_str(&removalwhy))) break; } if (!pdep) { @@ -1436,7 +1437,7 @@ void check_conflict(struct dependency *dep, struct pkginfo *pkg, notice(_("may have trouble removing %s, as it provides %s ..."), pkg_name(fixbyrm, pnaw_nonambig), providecheck->list->ed->name); - if (!try_remove_can(pdep,fixbyrm,removalwhy.buf)) + if (!try_remove_can(pdep, fixbyrm, varbuf_str(&removalwhy))) goto break_from_both_loops_at_once; } } @@ -1472,7 +1473,8 @@ void check_conflict(struct dependency *dep, struct pkginfo *pkg, } varbuf_end_str(&conflictwhy); notice(_("regarding %s containing %s:\n%s"), pfilename, - pkgbin_name(pkg, &pkg->available, pnaw_nonambig), conflictwhy.buf); + pkgbin_name(pkg, &pkg->available, pnaw_nonambig), + varbuf_str(&conflictwhy)); if (!force_conflicts(dep->list)) ohshit(_("conflicting packages - not installing %.250s"), pkgbin_name(pkg, &pkg->available, pnaw_nonambig)); diff --git a/src/main/configure.c b/src/main/configure.c index f2c9227ad..86d4ea202 100644 --- a/src/main/configure.c +++ b/src/main/configure.c @@ -610,13 +610,13 @@ deferred_configure(struct pkginfo *pkg) sincenothing = 0; varbuf_end_str(&aemsgs); notice(_("dependency problems prevent configuration of %s:\n%s"), - pkg_name(pkg, pnaw_nonambig), aemsgs.buf); + pkg_name(pkg, pnaw_nonambig), varbuf_str(&aemsgs)); varbuf_destroy(&aemsgs); ohshit(_("dependency problems - leaving unconfigured")); } else if (aemsgs.used) { varbuf_end_str(&aemsgs); notice(_("%s: dependency problems, but configuring anyway as you requested:\n%s"), - pkg_name(pkg, pnaw_nonambig), aemsgs.buf); + pkg_name(pkg, pnaw_nonambig), varbuf_str(&aemsgs)); } varbuf_destroy(&aemsgs); sincenothing = 0; @@ -777,8 +777,8 @@ conffderef(struct pkginfo *pkg, struct varbuf *result, const char *in) r++; varbuf_trunc(result, r); debug(dbg_conffdetail, - "conffderef readlink relative to '%.*s'", - (int)result->used, result->buf); + "conffderef readlink relative to '%s'", + varbuf_str(result)); } varbuf_add_varbuf(result, &target); varbuf_end_str(result); diff --git a/src/main/depcon.c b/src/main/depcon.c index e8efdd3be..9037d667b 100644 --- a/src/main/depcon.c +++ b/src/main/depcon.c @@ -178,7 +178,7 @@ findbreakcyclerecursive(struct pkginfo *pkg, struct cyclesofarlink *sofar) } varbuf_end_str(&str_pkgs); debug(dbg_depcondetail, "findbreakcyclerecursive %s %s", - pkg_name(pkg, pnaw_always), str_pkgs.buf); + pkg_name(pkg, pnaw_always), varbuf_str(&str_pkgs)); varbuf_destroy(&str_pkgs); } thislink.pkg= pkg; diff --git a/src/main/packages.c b/src/main/packages.c index aba9ba700..7f35ba4ca 100644 --- a/src/main/packages.c +++ b/src/main/packages.c @@ -565,7 +565,7 @@ breaks_check_one(struct varbuf *aemsgs, enum dep_check *ok, varbuf_printf(aemsgs, _(" %s (%s) breaks %s and is %s.\n"), pkg_name(breaker, pnaw_nonambig), versiondescribe(&breaker->installed.version, vdew_nonambig), - depmsg.buf, gettext(statusstrings[breaker->status])); + varbuf_str(&depmsg), gettext(statusstrings[breaker->status])); varbuf_destroy(&depmsg); if (virtbroken) { @@ -755,6 +755,7 @@ dependencies_ok(struct pkginfo *pkg, struct pkginfo *removing, progress_bytrigproc = canfixbytrig; varbuf_destroy(&oemsgs); - debug(dbg_depcon,"ok %d msgs >>%.*s<<", ok, (int)aemsgs->used, aemsgs->buf); + debug(dbg_depcon, "ok %d msgs >>%s<<", ok, varbuf_str(aemsgs)); + return ok; } diff --git a/src/main/remove.c b/src/main/remove.c index 88c01a227..a2d937c02 100644 --- a/src/main/remove.c +++ b/src/main/remove.c @@ -153,12 +153,12 @@ void deferred_remove(struct pkginfo *pkg) { sincenothing= 0; varbuf_end_str(&raemsgs); notice(_("dependency problems prevent removal of %s:\n%s"), - pkg_name(pkg, pnaw_nonambig), raemsgs.buf); + pkg_name(pkg, pnaw_nonambig), varbuf_str(&raemsgs)); ohshit(_("dependency problems - not removing")); } else if (raemsgs.used) { varbuf_end_str(&raemsgs); notice(_("%s: dependency problems, but removing anyway as you requested:\n%s"), - pkg_name(pkg, pnaw_nonambig), raemsgs.buf); + pkg_name(pkg, pnaw_nonambig), varbuf_str(&raemsgs)); } varbuf_destroy(&raemsgs); sincenothing= 0; diff --git a/src/main/script.c b/src/main/script.c index 017d92efe..9b76b933b 100644 --- a/src/main/script.c +++ b/src/main/script.c @@ -138,7 +138,7 @@ maintscript_pre_exec(struct command *cmd) } varbuf_end_str(&args); debug(dbg_scripts, "fork/exec %s (%s )", cmd->filename, - args.buf); + varbuf_str(&args)); varbuf_destroy(&args); } if (instdirlen == 0 || in_force(FORCE_SCRIPT_CHROOTLESS)) diff --git a/src/main/select.c b/src/main/select.c index d71202e30..77e69e850 100644 --- a/src/main/select.c +++ b/src/main/select.c @@ -177,21 +177,23 @@ setselections(const char *const *argv) if (!c_isspace(c)) ohshit(_("unexpected data after package and selection at line %d"),lno); } - pkg = pkg_spec_parse_pkg(namevb.buf, &err); + pkg = pkg_spec_parse_pkg(varbuf_str(&namevb), &err); if (pkg == NULL) ohshit(_("illegal package name at line %d: %.250s"), lno, err.str); if (!pkg_is_informative(pkg, &pkg->installed) && !pkg_is_informative(pkg, &pkg->available)) { db_possibly_outdated = true; - warning(_("package not in status nor available database at line %d: %.250s"), lno, namevb.buf); + warning(_("package not in status nor available database at line %d: %.250s"), + lno, varbuf_str(&namevb)); lno++; continue; } - nv = namevalue_find_by_name(wantinfos, selvb.buf); + nv = namevalue_find_by_name(wantinfos, varbuf_str(&selvb)); if (nv == NULL) - ohshit(_("unknown wanted status at line %d: %.250s"), lno, selvb.buf); + ohshit(_("unknown wanted status at line %d: %.250s"), + lno, varbuf_str(&selvb)); pkg_set_want(pkg, nv->value); if (c == EOF) break; diff --git a/src/main/trigproc.c b/src/main/trigproc.c index 125eb02a0..14e517923 100644 --- a/src/main/trigproc.c +++ b/src/main/trigproc.c @@ -437,14 +437,16 @@ trigproc(struct pkginfo *pkg, enum trigproc_type type) varbuf_end_str(&depwhynot); notice(_("dependency problems prevent processing " "triggers for %s:\n%s"), - pkg_name(pkg, pnaw_nonambig), depwhynot.buf); + pkg_name(pkg, pnaw_nonambig), + varbuf_str(&depwhynot)); varbuf_destroy(&depwhynot); ohshit(_("dependency problems - leaving triggers unprocessed")); } else if (depwhynot.used) { varbuf_end_str(&depwhynot); notice(_("%s: dependency problems, but processing " "triggers anyway as you requested:\n%s"), - pkg_name(pkg, pnaw_nonambig), depwhynot.buf); + pkg_name(pkg, pnaw_nonambig), + varbuf_str(&depwhynot)); varbuf_destroy(&depwhynot); } @@ -472,7 +474,7 @@ trigproc(struct pkginfo *pkg, enum trigproc_type type) if (!f_noact) { sincenothing = 0; maintscript_postinst(pkg, "triggered", - namesarg.buf + 1, NULL); + varbuf_str(&namesarg) + 1, NULL); } post_postinst_tasks(pkg, PKG_STAT_INSTALLED); diff --git a/src/main/unpack.c b/src/main/unpack.c index 02c2681d7..d890ac128 100644 --- a/src/main/unpack.c +++ b/src/main/unpack.c @@ -247,7 +247,7 @@ pkg_check_depcon(struct pkginfo *pkg, const char *pfilename) varbuf_end_str(&depprobwhy); notice(_("regarding %s containing %s, pre-dependency problem:\n%s"), pfilename, pkgbin_name(pkg, &pkg->available, pnaw_nonambig), - depprobwhy.buf); + varbuf_str(&depprobwhy)); if (!force_depends(dsearch->list)) ohshit(_("pre-dependency problem - not installing %.250s"), pkgbin_name(pkg, &pkg->available, pnaw_nonambig)); @@ -719,10 +719,10 @@ pkg_remove_old_files(struct pkginfo *pkg, continue; } - if (lstat(fnamevb.buf, &oldfs)) { + if (lstat(varbuf_str(&fnamevb), &oldfs)) { if (!(errno == ENOENT || errno == ELOOP || errno == ENOTDIR)) warning(_("could not stat old file '%.250s' so not deleting it: %s"), - fnamevb.buf, strerror(errno)); + varbuf_str(&fnamevb), strerror(errno)); continue; } if (S_ISDIR(oldfs.st_mode)) { @@ -732,7 +732,7 @@ pkg_remove_old_files(struct pkginfo *pkg, if (strcmp(usenode->name, "/.") == 0) continue; - if (rmdir(fnamevb.buf)) { + if (rmdir(varbuf_str(&fnamevb))) { warning(_("unable to delete old directory '%.250s': %s"), namenode->name, strerror(errno)); } else if ((namenode->flags & FNNF_OLD_CONFF)) { @@ -762,7 +762,7 @@ pkg_remove_old_files(struct pkginfo *pkg, /* If we can't stat the old or new file, or it's a directory, * we leave it up to the normal code. */ debug(dbg_eachfile, "process_archive: checking %s for same files on " - "upgrade/downgrade", fnamevb.buf); + "upgrade/downgrade", varbuf_str(&fnamevb)); for (cfile = newfiles_queue->head; cfile; cfile = cfile->next) { /* If the file has been filtered then treat it as if it didn't exist @@ -777,7 +777,7 @@ pkg_remove_old_files(struct pkginfo *pkg, varbuf_add_str(&cfilename, cfile->namenode->name); varbuf_end_str(&cfilename); - if (lstat(cfilename.buf, &tmp_stat) == 0) { + if (lstat(varbuf_str(&cfilename), &tmp_stat) == 0) { struct file_ondisk_id *file_ondisk_id; file_ondisk_id = nfmalloc(sizeof(*file_ondisk_id)); @@ -800,11 +800,11 @@ pkg_remove_old_files(struct pkginfo *pkg, oldfs.st_ino == cfile->namenode->file_ondisk_id->id_ino) { if (sameas) warning(_("old file '%.250s' is the same as several new files! " - "(both '%.250s' and '%.250s')"), fnamevb.buf, + "(both '%.250s' and '%.250s')"), varbuf_str(&fnamevb), sameas->namenode->name, cfile->namenode->name); sameas = cfile; debug(dbg_eachfile, "process_archive: not removing %s, " - "since it matches %s", fnamevb.buf, cfile->namenode->name); + "since it matches %s", varbuf_str(&fnamevb), cfile->namenode->name); } } @@ -839,7 +839,7 @@ pkg_remove_old_files(struct pkginfo *pkg, trig_path_activate(usenode, pkg); - if (secure_unlink_statted(fnamevb.buf, &oldfs)) { + if (secure_unlink_statted(varbuf_str(&fnamevb), &oldfs)) { warning(_("unable to securely remove old file '%.250s': %s"), namenode->name, strerror(errno)); } @@ -1038,7 +1038,7 @@ pkg_disappear_others(struct pkginfo *pkg) varbuf_end_str(&depprobwhy); debug(dbg_veryverbose,"process_archive cannot disappear: %s", - depprobwhy.buf); + varbuf_str(&depprobwhy)); break; } if (!pdep) { @@ -1063,7 +1063,7 @@ pkg_disappear_others(struct pkginfo *pkg) varbuf_end_str(&depprobwhy); debug(dbg_veryverbose, "process_archive cannot disappear (provides %s): %s", - providecheck->list->ed->name, depprobwhy.buf); + providecheck->list->ed->name, varbuf_str(&depprobwhy)); goto break_from_both_loops_at_once; } } @@ -1194,7 +1194,7 @@ pkg_remove_backup_files(struct pkginfo *pkg, struct fsys_namenode_list *newfiles varbuf_add_str(&fnametmpvb, usenode->name); varbuf_add_str(&fnametmpvb, DPKGTEMPEXT); varbuf_end_str(&fnametmpvb); - path_remove_tree(fnametmpvb.buf); + path_remove_tree(varbuf_str(&fnametmpvb)); } } diff --git a/src/main/verify.c b/src/main/verify.c index 6a5d733e4..acae170e8 100644 --- a/src/main/verify.c +++ b/src/main/verify.c @@ -196,7 +196,7 @@ verify_package(struct pkginfo *pkg) memset(&checks, 0, sizeof(checks)); - if (verify_file(filename.buf, fnn, pkg, &checks) > 0) + if (verify_file(varbuf_str(&filename), fnn, pkg, &checks) > 0) verify_output(fnn, &checks); } diff --git a/src/statoverride/main.c b/src/statoverride/main.c index 07c875711..aaa61a1cb 100644 --- a/src/statoverride/main.c +++ b/src/statoverride/main.c @@ -282,12 +282,12 @@ statoverride_add(const char *const *argv) varbuf_add_str(&realfilename, filename); varbuf_end_str(&realfilename); - if (stat(realfilename.buf, &st) == 0) { + if (stat(varbuf_str(&realfilename), &st) == 0) { (*filestat)->mode |= st.st_mode & S_IFMT; - statdb_node_apply(realfilename.buf, *filestat); + statdb_node_apply(varbuf_str(&realfilename), *filestat); } else if (opt_verbose) { warning(_("--update given but %s does not exist"), - realfilename.buf); + varbuf_str(&realfilename)); } varbuf_destroy(&realfilename); -- Dpkg.Org's dpkg