Subject: Re: [PATCH next] netfilter: nf_conntrack_h323: Correct indentation when H323_TRACE defined

From: Petr Mladek <[email-masked]>
Date: Fri, 27 Mar 2026 10:47:41 +0100

On Thu 2026-03-26 20:18:19, [email-masked] wrote:
> From: David Laight <[email-masked]>
> 
> The trace lines are indented using PRINT("%*.s", xx, " ").
> Userspace will treat this as "%*.0s" and will output no characters
> when 'xx' is zero, the kernel treats it as "%*s" and will output
> a single ' ' - which is probably what is intended.
> 
> Change all the formats to "%*s" removing the default precision.
> This gives a single space indent when level is zero.
> 
> Signed-off-by: David Laight <[email-masked]>
> ---
>  net/netfilter/nf_conntrack_h323_asn1.c | 38 +++++++++++++-------------
>  1 file changed, 19 insertions(+), 19 deletions(-)
> 
> diff --git a/net/netfilter/nf_conntrack_h323_asn1.c b/net/netfilter/nf_conntrack_h323_asn1.c
> index 7b1497ed97d2..287402428975 100644
> --- a/net/netfilter/nf_conntrack_h323_asn1.c
> +++ b/net/netfilter/nf_conntrack_h323_asn1.c
> @@ -276,7 +276,7 @@ static unsigned int get_uint(struct bitstr *bs, int b)
>  static int decode_nul(struct bitstr *bs, const struct field_t *f,
>                        char *base, int level)
>  {
> -	PRINT("%*.s%s\n", level * TAB_SIZE, " ", f->name);
> +	PRINT("%*s%s\n", level * TAB_SIZE, " ", f->name);
>  
>  	return H323_ERROR_NONE;
>  }

The change is important for making the kernel %*.s handling POSIX
compliant. The dot '.' without any following number is handled
a zero precision by POSIX. It would print no space "" when
also the field width was zero, aka when level == 0.

It has no efect if the field width (@level) is always > 0 because
vsprintf() would add the required emptry spaces ' ' anyway.

Reviewed-by: Petr Mladek <[email-masked]>

Best Regards,
Petr