Subject: bug#61201: closed (Re: bug#61749: [PATCH] ui: 'display-hint' quotes extra arguments for Texinfo.)

From: [email-masked] (GNU bug Tracking System)
Date: Mon, 27 Feb 2023 22:56:02 +0000

Your bug report

#61201: Installation hint crashes when user names contain at sign

which was filed against the guix package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
61201: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=61201
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#61749: [PATCH] ui: 'display-hint' quotes extra arguments for Texinfo.
From: Ludovic Courtès <[email-masked]>
To: [email-masked]
Cc: [email-masked]
Date: Mon, 27 Feb 2023 23:55:16 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

Ludovic Courtès <[email-masked]> skribis:

> Fixes <https://issues.guix.gnu.org/61201>.
>
> Previously, common practice was to splice arbitrary strings (user names,
> file names, etc.) into Texinfo snippets passed to 'display-hint'.  This
> is unsafe in the general case because at signs and braces need to be
> escaped to produced valid Texinfo.  This commit addresses that.
>
> * guix/ui.scm (texinfo-quote): New procedure.
> (display-hint): When ARGUMENTS is non-empty, pass it to 'texinfo-quote'
> and call 'format'.
> (report-unbound-variable-error, check-module-matches-file)
> (display-collision-resolution-hint, run-guix-command): Remove explicit
> 'format' call; pass 'format' arguments as extra arguments to 'display-hint'.
> * gnu/services/monitoring.scm (zabbix-front-end-config): Likewise.
> * guix/scripts.scm (warn-about-disk-space): Likewise.
> * guix/scripts/build.scm (%standard-cross-build-options)
> (%standard-native-build-options): Likewise.
> * guix/scripts/describe.scm (display-checkout-info): Likewise.
> * guix/scripts/environment.scm (suggest-command-name): Likewise.
> * guix/scripts/home.scm (process-command): Likewise.
> * guix/scripts/home/edit.scm (service-type-not-found): Likewise.
> * guix/scripts/import.scm (guix-import): Likewise.
> * guix/scripts/package.scm (display-search-path-hint): Likewise.
> * guix/scripts/pull.scm (build-and-install): Likewise.
> * guix/scripts/shell.scm (auto-detect-manifest): Likewise.
> * guix/scripts/system.scm (check-file-system-availability): Likewise.
> (guix-system): Likewise.
> * guix/scripts/system/edit.scm (service-type-not-found): Likewise.
> * guix/status.scm (print-build-event): Likewise.

Pushed as 43c36c5c9f7a31649eb059fd16ed82bde20da3fc.

Ludo’.

Subject: Installation hint crashes when user names contain at sign
From: Ludovic Courtès <[email-masked]>
To: [email-masked]
Date: Tue, 31 Jan 2023 18:05:40 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

A funny thing was reported earlier today on the Café Guix channel:

--8<---------------cut here---------------start------------->8---
$ guix install hello  [17:52]
building profile with 5 packages...
hint: Backtrace:
          17 (primitive-load "/usr/local/bin/guix")
In guix/ui.scm:
   2279:7 16 (run-guix . )
  2242:10 15 (run-guix-command _ . )
In ice-9/boot-9.scm:
  1752:10 14 (with-exception-handler _ _ #:unwind? _ # )
In guix/status.scm:
    835:3 13 ()
    815:4 12 (call-with-status-report _ )
In guix/store.scm:
   1300:8 11 (call-with-build-handler _ )
   1300:8 10 (call-with-build-handler # ?)
In guix/build/syscalls.scm:
   1440:3  9 ()
   1407:4  8 (call-with-file-lock/no-wait _ _ )
In guix/scripts/package.scm:
    325:7  7 (build-and-use-profile _ "/var/guix/profiles/per-user/?" ?)
In guix/ui.scm:
    312:5  6 (display-hint _ )
  1451:24  5 (texi->plain-text )
In texinfo.scm:
  1132:22  4 (parse )
   980:31  3 (loop #<input: string 2b6e5926be70> (fragment) _ _ )
   967:36  2 (loop #<input: string 2b6e5926be70> #f # ?)
     92:2  1 (command-spec )
In ice-9/boot-9.scm:
  1685:16  0 (raise-exception _ #:continuable? )
 
ice-9/boot-9.scm:1685:16: In procedure raise-exception:
Throw to key #E1E1E1">parser-error' with args(#f "Unknown command" univ)'.
--8<---------------cut here---------------end--------------->8---

This is because the user name ends in “@univ…”, which ‘display-hint’
interprets as Texinfo.

Ludo’.