Package: openssh-client
Version: 1:9.9p1-3
Severity: minor
Tags: patch

   * What led up to the situation?

     Checking for defects with a new version

test-[g|n]roff -mandoc -t -K utf8 -rF0 -rHY=0 -rCHECKSTYLE=10 -ww -z < "man 
page"

  [Use "groff -e ' $' -e '\\~$' <file>" to find obvious trailing spaces.]

  ["test-groff" is a script in the repository for "groff"; is not shipped]
(local copy and "troff" slightly changed by me).

  [The fate of "test-nroff" was decided in groff bug #55941.]

   * What was the outcome of this action?

troff:<stdin>:1030: warning: [page 8, 6.5i]: cannot break line

   * What outcome did you expect instead?

     No output (no warnings).

-.-

  General remarks and further material, if a diff-file exist, are in the
attachments.


-- System Information:
Debian Release: trixie/sid
  APT prefers testing
  APT policy: (500, 'testing')
Architecture: amd64 (x86_64)

Kernel: Linux 6.12.12-amd64 (SMP w/2 CPU threads; PREEMPT)
Locale: LANG=is_IS.iso88591, LC_CTYPE=is_IS.iso88591 (charmap=ISO-8859-1), 
LANGUAGE not set
Shell: /bin/sh linked to /usr/bin/dash
Init: sysvinit (via /sbin/init)

Versions of packages openssh-client depends on:
ii  adduser           3.137
ii  libc6             2.40-6
ii  libedit2          3.1-20250104-1
ii  libfido2-1        1.15.0-1+b1
ii  libgssapi-krb5-2  1.21.3-4
ii  libselinux1       3.7-3.1
ii  libssl3t64        3.4.0-2
ii  passwd            1:4.16.0-7
ii  zlib1g            1:1.3.dfsg+really1.3.1-1+b1

Versions of packages openssh-client recommends:
ii  xauth  1:1.1.2-1.1

Versions of packages openssh-client suggests:
pn  keychain      <none>
pn  libpam-ssh    <none>
pn  monkeysphere  <none>
pn  ssh-askpass   <none>

-- no debconf information
Input file is ssh_config.5

Output from "mandoc -T lint  ssh_config.5": (shortened list)

      6 new sentence, new line
      1 no blank before trailing delimiter: Pa /etc/ssh/ssh_config.
      1 referenced manual not found: Xr ssh-askpass 1
      1 referenced manual not found: Xr sshd 8 (4 times)
      1 referenced manual not found: Xr sshd_config 5 (6 times)
      1 referenced manual not found: Xr tap 4
      1 referenced manual not found: Xr tun 4 (3 times)

-.-.

Output from "test-groff -mandoc -t -ww -z ssh_config.5": (shortened list)

      1 cannot break line

-.-.

Change '-' (\-) to '\(en' (en-dash) for a (numeric) range.

GNU gnulib has recently (2023-06-18) updated its
"build_aux/update-copyright" to recognize "\(en" in man pages.


ssh_config.5:2275:would match any host in the 192.168.0.[0-9] network range:

-.-.

Add a (no-break, "\ " or "\~") space between a number and a unit,
as these are not one entity.

1774:.Sq 1G
1776:.Sq 4G ,

-.-.

Change a HYPHEN-MINUS (code 0x2D) to a minus(-dash) (\-),
if it
is in front of a name for an option,
is a symbol for standard input,
is a single character used to indicate an option,
or is in the NAME section (man-pages(7)).
N.B. - (0x2D), processed as a UTF-8 file, is changed to a hyphen
(0x2010, groff \[u2010] or \[hy]) in the output.

1671:ProxyCommand /usr/bin/nc -X connect -x 192.0.2.0:8080 %h %p
1699:option - whichever is specified first will prevent later instances of the
1748:.Qq ssh -Q PubkeyAcceptedAlgorithms .
1932:.Pa - .
2457:.An -nosplit

-.-.

Strings longer than 3/4 of a standard line length (80)
Use "\:" to split the string at the end of an output line, for example a
long URL (web address)

1030 .Dq 
gss-group14-sha256-,gss-group16-sha512-,gss-nistp256-sha256-,gss-curve25519-sha256-,gss-gex-sha1-,gss-group14-sha1-
 .

-.-.

Add a "\&" after "e.g." and "i.e.", or use English words
(man-pages(7)).
Abbreviation points should be protected against being interpreted as
an end of sentence, if they are not, and that independent of the
current place on the line.

230:situations (e.g. when the network is automatically configured using DHCP)
402:allows a single dot (i.e. hostname.subdomain).
552:guarantee to remove all resources associated with the session, e.g. shell
687:connection i.e. it is not possible to forward multiple displays or agents.
2168:(i.e. not
2368:The type of the server host key, e.g.
2407:shell commands (e.g. quotes), it is the user's responsibility to ensure 
that

-.-.

Wrong distance between sentences in the input file.

  Separate the sentences and subordinate clauses; each begins on a new
line.  See man-pages(7) ("Conventions for source file layout") and
"info groff" ("Input Conventions").

  The best procedure is to always start a new sentence on a new line,
at least, if you are typing on a computer.

Remember coding: Only one command ("sentence") on each (logical) line.

E-mail: Easier to quote exactly the relevant lines.

Generally: Easier to edit the sentence.

Patches: Less unaffected text.

Search for two adjacent words is easier, when they belong to the same line,
and the same phrase.

  The amount of space between sentences in the output can then be
controlled with the ".ss" request.

Mark a final abbreviation point as such by suffixing it with "\&".

Some sentences (etc.) do not begin on a new line.


230:situations (e.g. when the network is automatically configured using DHCP)
402:allows a single dot (i.e. hostname.subdomain).
552:guarantee to remove all resources associated with the session, e.g. shell
687:connection i.e. it is not possible to forward multiple displays or agents.
973:connecting to the server. The default is unset, which means that the default
980:Specifies whether key exchange based on GSSAPI may be used. When using
988:ssh connection. With a compatible server, this will delegate the renewed
1003:connecting to the server. The default is unset, which means that the
1010:the name of the host being connected to. If
1018:key exchange. Possible values are
2168:(i.e. not
2407:shell commands (e.g. quotes), it is the user's responsibility to ensure 
that

-.-.

Split lines longer than 80 characters into two or more lines.
Appropriate break points are the end of a sentence and a subordinate
clause; after punctuation marks.
Use '\:' for splitting the string for the output, "\<newline>" in the source.

Line 1030, length 121

.Dq 
gss-group14-sha256-,gss-group16-sha512-,gss-nistp256-sha256-,gss-curve25519-sha256-,gss-gex-sha1-,gss-group14-sha1-
 .

-.-.

Use \(en (en-dash) for a dash at the beginning (en) of a line,
or between space characters,
not a minus (\-) or a hyphen (-), except in the NAME section.

ssh_config.5:1699:option - whichever is specified first will prevent later 
instances of the

-.-.

Put a parenthetical sentence, phrase on a separate line,
if not part of a code.
See man-pages(7), item "semantic newline".

Not considered in a patch, too many lines.

[List of affected lines removed]

-.-

Use a no-break space between a number and a (SI) unit

1556:The default is to obscure keystrokes using a 20ms packet interval.

-.-.

Output from "test-groff  -mandoc -t -K utf8 -rF0 -rHY=0 -rCHECKSTYLE=10 -ww -z 
":

troff:<stdin>:1030: warning: [page 8, 6.5i]: cannot break line
--- ssh_config.5        2025-02-15 19:53:15.370578389 +0000
+++ ssh_config.5.new    2025-02-16 01:49:41.156839680 +0000
@@ -92,7 +92,7 @@ which are not the default in
 .Pa /etc/ssh/ssh_config.d/*.conf
 files are included at the start of the system-wide configuration file, so
 options set there will override those in
-.Pa /etc/ssh/ssh_config.
+.Pa /etc/ssh/ssh_config .
 .Pp
 The file contains keyword-argument pairs, one per line.
 Lines starting with
@@ -227,7 +227,7 @@ supplied list of networks in CIDR format
 This may be convenient for varying the effective configuration on devices that
 roam between networks.
 Note that network address is not a trustworthy criteria in many
-situations (e.g. when the network is automatically configured using DHCP)
+situations (e.g.\& when the network is automatically configured using DHCP)
 and so caution should be applied if using it to control security-sensitive
 configuration.
 .Pp
@@ -399,7 +399,7 @@ host.
 Specifies the maximum number of dot characters in a hostname before
 canonicalization is disabled.
 The default, 1,
-allows a single dot (i.e. hostname.subdomain).
+allows a single dot (i.e.\& hostname.subdomain).
 .It Cm CanonicalizePermittedCNAMEs
 Specifies rules to determine whether CNAMEs should be followed when
 canonicalizing hostnames.
@@ -443,7 +443,7 @@ If the specified list begins with a
 character, then the specified algorithms will be appended to the default set
 instead of replacing them.
 If the specified list begins with a
-.Sq -
+.Sq \-
 character, then the specified algorithms (including wildcards) will be removed
 from the default set instead of replacing them.
 .Pp
@@ -549,7 +549,7 @@ Open X11 forwarding sessions.
 .El
 .Pp
 Note that in all the above cases, terminating an inactive session does not
-guarantee to remove all resources associated with the session, e.g. shell
+guarantee to remove all resources associated with the session, e.g.\& shell
 processes or X11 clients relating to the session may continue to execute.
 .Pp
 Moreover, terminating an inactive channel or session does not necessarily
@@ -583,7 +583,7 @@ If the specified list begins with a
 character, then the specified ciphers will be appended to the default set
 instead of replacing them.
 If the specified list begins with a
-.Sq -
+.Sq \-
 character, then the specified ciphers (including wildcards) will be removed
 from the default set instead of replacing them.
 If the specified list begins with a
@@ -613,7 +613,7 @@ aes128-...@openssh.com,aes256-gcm@openss
 .Ed
 .Pp
 The list of available ciphers may also be obtained using
-.Qq ssh -Q cipher .
+.Qq ssh \-Q cipher .
 .It Cm ClearAllForwardings
 Specifies that all local, remote, and dynamic port forwardings
 specified in the configuration files or on the command line be
@@ -684,7 +684,7 @@ X11 and
 .Xr ssh-agent 1
 forwarding is supported over these multiplexed connections, however the
 display and agent forwarded will be the one belonging to the master
-connection i.e. it is not possible to forward multiple displays or agents.
+connection i.e.\& it is not possible to forward multiple displays or agents.
 .Pp
 Two additional options allow for opportunistic multiplexing: try to use a
 master connection but fall back to creating a new one if one does not already
@@ -733,7 +733,7 @@ If set to
 or 0,
 then the master connection will remain in the background indefinitely
 (until killed or closed via a mechanism such as the
-.Qq ssh -O exit ) .
+.Qq ssh \-O exit ) .
 If set to a time in seconds, or a time in any of the formats documented in
 .Xr sshd_config 5 ,
 then the backgrounded master connection will automatically terminate
@@ -845,7 +845,7 @@ configuration option being set to
 .Dq yes .
 The recommended way to start X11 programs at a remote site is with
 something like
-.Ic ssh -f host xterm ,
+.Ic ssh \-f host xterm ,
 which is the same as
 .Ic ssh host xterm
 if the
@@ -970,22 +970,25 @@ The default is
 .Cm no .
 .It Cm GSSAPIClientIdentity
 If set, specifies the GSSAPI client identity that ssh should use when
-connecting to the server. The default is unset, which means that the default
-identity will be used.
+connecting to the server.
+The default is unset,
+which means
+that the default identity will be used.
 .It Cm GSSAPIDelegateCredentials
 Forward (delegate) credentials to the server.
 The default is
 .Cm no .
 .It Cm GSSAPIKeyExchange
-Specifies whether key exchange based on GSSAPI may be used. When using
-GSSAPI key exchange the server need not have a host key.
+Specifies whether key exchange based on GSSAPI may be used.
+When using GSSAPI key exchange the server need not have a host key.
 The default is
 .Dq no .
 .It Cm GSSAPIRenewalForcesRekey
 If set to
 .Dq yes
 then renewal of the client's GSSAPI credentials will force the rekeying of the
-ssh connection. With a compatible server, this will delegate the renewed
+ssh connection.
+With a compatible server, this will delegate the renewed
 credentials to a session on the server.
 .Pp
 Checks are made to ensure that credentials are only propagated when the new
@@ -1000,14 +1003,16 @@ For this to work
 needs to be enabled in the server and also used by the client.
 .It Cm GSSAPIServerIdentity
 If set, specifies the GSSAPI server identity that ssh should expect when
-connecting to the server. The default is unset, which means that the
-expected GSSAPI server identity will be determined from the target
-hostname.
+connecting to the server.
+The default is unset,
+which means that the expected GSSAPI server identity will be determined
+from the target hostname.
 .It Cm GSSAPITrustDns
 Set to
 .Dq yes
 to indicate that the DNS is trusted to securely canonicalize
-the name of the host being connected to. If
+the name of the host being connected to.
+If
 .Dq no ,
 the hostname entered on the
 command line will be passed untouched to the GSSAPI library.
@@ -1015,7 +1020,8 @@ The default is
 .Dq no .
 .It Cm GSSAPIKexAlgorithms
 The list of key exchange algorithms that are offered for GSSAPI
-key exchange. Possible values are
+key exchange.
+Possible values are
 .Bd -literal -offset 3n
 gss-gex-sha1-,
 gss-group1-sha1-,
@@ -1027,7 +1033,8 @@ gss-curve25519-sha256-
 .Ed
 .Pp
 The default is
-.Dq 
gss-group14-sha256-,gss-group16-sha512-,gss-nistp256-sha256-,gss-curve25519-sha256-,gss-gex-sha1-,gss-group14-sha1-
 .
+.Dq gss-group14-sha256-,\:gss-group16-sha512-,\:gss-nistp256-sha256-,\
+\:gss-curve25519-sha256-,\:gss-gex-sha1-,\:gss-group14-sha1- .
 This option only applies to connections using GSSAPI.
 .It Cm HashKnownHosts
 Indicates that
@@ -1057,7 +1064,7 @@ Alternately if the specified list begins
 character, then the specified signature algorithms will be appended
 to the default set instead of replacing them.
 If the specified list begins with a
-.Sq -
+.Sq \-
 character, then the specified signature algorithms (including wildcards)
 will be removed from the default set instead of replacing them.
 If the specified list begins with a
@@ -1103,7 +1110,7 @@ Alternately if the specified list begins
 character, then the specified signature algorithms will be appended to
 the default set instead of replacing them.
 If the specified list begins with a
-.Sq -
+.Sq \-
 character, then the specified signature algorithms (including wildcards)
 will be removed from the default set instead of replacing them.
 If the specified list begins with a
@@ -1131,7 +1138,7 @@ If hostkeys are known for the destinatio
 to prefer their algorithms.
 .Pp
 The list of available signature algorithms may also be obtained using
-.Qq ssh -Q HostKeyAlgorithms .
+.Qq ssh \-Q HostKeyAlgorithms .
 .It Cm HostKeyAlias
 Specifies an alias that should be used instead of the
 real host name when looking up or saving the host key
@@ -1176,7 +1183,7 @@ This option is intended for situations w
 offers many different identities.
 .It Cm IdentityAgent
 Specifies the
-.Ux Ns -domain
+.Ux Ns \-domain
 socket used to communicate with the authentication agent.
 .Pp
 This option overrides the
@@ -1226,7 +1233,7 @@ If no certificates have been explicitly
 .Xr ssh 1
 will try to load certificate information from the filename obtained by
 appending
-.Pa -cert.pub
+.Pa \-cert.pub
 to the path of a specified
 .Cm IdentityFile .
 .Pp
@@ -1364,7 +1371,7 @@ If the specified list begins with a
 character, then the specified algorithms will be appended to the default set
 instead of replacing them.
 If the specified list begins with a
-.Sq -
+.Sq \-
 character, then the specified algorithms (including wildcards) will be removed
 from the default set instead of replacing them.
 If the specified list begins with a
@@ -1385,7 +1392,7 @@ diffie-hellman-group14-sha256
 .Ed
 .Pp
 The list of supported key exchange algorithms may also be obtained using
-.Qq ssh -Q kex .
+.Qq ssh \-Q kex .
 .It Cm KnownHostsCommand
 Specifies a command to use to obtain a list of host keys, in addition to
 those listed in
@@ -1501,7 +1508,7 @@ If the specified list begins with a
 character, then the specified algorithms will be appended to the default set
 instead of replacing them.
 If the specified list begins with a
-.Sq -
+.Sq \-
 character, then the specified algorithms (including wildcards) will be removed
 from the default set instead of replacing them.
 If the specified list begins with a
@@ -1510,7 +1517,7 @@ character, then the specified algorithms
 default set.
 .Pp
 The algorithms that contain
-.Qq -etm
+.Qq \-etm
 calculate the MAC after encryption (encrypt-then-mac).
 These are considered safer and their use recommended.
 .Pp
@@ -1524,7 +1531,7 @@ hmac-sha2-256,hmac-sha2-512,hmac-sha1
 .Ed
 .Pp
 The list of available MAC algorithms may also be obtained using
-.Qq ssh -Q mac .
+.Qq ssh \-Q mac .
 .It Cm NoHostAuthenticationForLocalhost
 Disable host authentication for localhost (loopback addresses).
 The argument to this keyword must be
@@ -1553,7 +1560,7 @@ or an interval specifier of the form
 (e.g.\&
 .Cm interval:80
 for 80 milliseconds).
-The default is to obscure keystrokes using a 20ms packet interval.
+The default is to obscure keystrokes using a 20\~ms packet interval.
 Note that smaller intervals will result in higher fake keystroke packet rates.
 .It Cm PasswordAuthentication
 Specifies whether to use password authentication.
@@ -1650,7 +1657,7 @@ and should read from its standard input
 It should eventually connect an
 .Xr sshd 8
 server running on some machine, or execute
-.Ic sshd -i
+.Ic sshd \-i
 somewhere.
 Host key management will be done using the
 .Cm Hostname
@@ -1668,7 +1675,7 @@ and its proxy support.
 For example, the following directive would connect via an HTTP proxy at
 192.0.2.0:
 .Bd -literal -offset 3n
-ProxyCommand /usr/bin/nc -X connect -x 192.0.2.0:8080 %h %p
+ProxyCommand /usr/bin/nc \-X connect \-x 192.0.2.0:8080 %h %p
 .Ed
 .It Cm ProxyJump
 Specifies one or more jump proxies as either
@@ -1696,7 +1703,7 @@ disables this option entirely.
 .Pp
 Note that this option will compete with the
 .Cm ProxyCommand
-option - whichever is specified first will prevent later instances of the
+option \(en whichever is specified first will prevent later instances of the
 other from taking effect.
 .Pp
 Note also that the configuration for the destination host (either supplied
@@ -1720,7 +1727,7 @@ If the specified list begins with a
 character, then the algorithms after it will be appended to the default
 instead of replacing it.
 If the specified list begins with a
-.Sq -
+.Sq \-
 character, then the specified algorithms (including wildcards) will be removed
 from the default set instead of replacing them.
 If the specified list begins with a
@@ -1745,7 +1752,7 @@ rsa-sha2-512,rsa-sha2-256
 .Ed
 .Pp
 The list of available signature algorithms may also be obtained using
-.Qq ssh -Q PubkeyAcceptedAlgorithms .
+.Qq ssh \-Q PubkeyAcceptedAlgorithms .
 .It Cm PubkeyAuthentication
 Specifies whether to try public key authentication.
 The argument to this keyword must be
@@ -1771,9 +1778,9 @@ or
 .Sq G
 to indicate Kilobytes, Megabytes, or Gigabytes, respectively.
 The default is between
-.Sq 1G
+.Sq 1\~GB
 and
-.Sq 4G ,
+.Sq 4\~GB ,
 depending on the cipher.
 The optional second value is specified in seconds and may use any of the
 units documented in the TIME FORMATS section of
@@ -1929,7 +1936,7 @@ for more information on patterns.
 It is possible to clear previously set
 .Cm SendEnv
 variable names by prefixing patterns with
-.Pa - .
+.Pa \- .
 The default is not to send any environment variables.
 .It Cm ServerAliveCountMax
 Sets the number of server alive messages (see below) which may be
@@ -2165,7 +2172,7 @@ Additional hostkeys are only accepted if
 host was already trusted or explicitly accepted by the user, the host was
 authenticated via
 .Cm UserKnownHostsFile
-(i.e. not
+(i.e.\& not
 .Cm GlobalKnownHostsFile )
 and the host was authenticated using a plain key and not a certificate.
 .Pp
@@ -2272,7 +2279,7 @@ the following pattern could be used:
 .Dl Host *.co.uk
 .Pp
 The following pattern
-would match any host in the 192.168.0.[0-9] network range:
+would match any host in the 192.168.0.[0\(en9] network range:
 .Pp
 .Dl Host 192.168.0.?
 .Pp
@@ -2365,7 +2372,7 @@ tunnel forwarding was requested, or
 .Qq NONE
 otherwise.
 .It %t
-The type of the server host key, e.g.
+The type of the server host key, e.g.\&
 .Cm ssh-ed25519 .
 .It %u
 The local username.
@@ -2404,7 +2411,7 @@ Note that some of these directives build
 Because
 .Xr ssh 1
 performs no filtering or escaping of characters that have special meaning in
-shell commands (e.g. quotes), it is the user's responsibility to ensure that
+shell commands (e.g.\& quotes), it is the user's responsibility to ensure that
 the arguments passed to
 .Xr ssh 1
 do not contain such characters and that tokens are appropriately quoted
  Any program (person), that produces man pages, should check the output
for defects by using (both groff and nroff)

[gn]roff -mandoc -t -ww -b -z -K utf8 <man page>

  The same goes for man pages that are used as an input.

  For a style guide use

  mandoc -T lint

-.-

  Any "autogenerator" should check its products with the above mentioned
'groff', 'mandoc', and additionally with 'nroff ...'.

  It should also check its input files for too long (> 80) lines.

  This is just a simple quality control measure.

  The "autogenerator" may have to be corrected to get a better man page,
the source file may, and any additional file may.

  Common defects:

  Not removing trailing spaces (in in- and output).
  The reason for these trailing spaces should be found and eliminated.

  "git" has a "tool" to point out whitespace,
see for example "git-apply(1)" and git-config(1)")

  Not beginning each input sentence on a new line.
Line length and patch size should thus be reduced.

  The script "reportbug" uses 'quoted-printable' encoding when a line is
longer than 1024 characters in an 'ascii' file.

  See man-pages(7), item "semantic newline".

-.-

The difference between the formatted output of the original and patched file
can be seen with:

  nroff -mandoc <file1> > <out1>
  nroff -mandoc <file2> > <out2>
  diff -d -u <out1> <out2>

and for groff, using

\"printf '%s\n%s\n' '.kern 0' '.ss 12 0' | groff -mandoc -Z - \"

instead of 'nroff -mandoc'

  Add the option '-t', if the file contains a table.

  Read the output from 'diff -d -u ...' with 'less -R' or similar.

-.-.

  If 'man' (man-db) is used to check the manual for warnings,
the following must be set:

  The option \"-warnings=w\"

  The environmental variable:

export MAN_KEEP_STDERR=yes (or any non-empty value)

  or

  (produce only warnings):

export MANROFFOPT=\"-ww -b -z\"

export MAN_KEEP_STDERR=yes (or any non-empty value)

-.-

Reply via email to