This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH] login: Add nonstring attributes to struct utmpx [BZ #24899]
On 15/08/2019 10:49, Florian Weimer wrote:
> * Adhemerval Zanella:
>
>> On 13/08/2019 08:16, Florian Weimer wrote:
>>> * Florian Weimer:
>>>
>>>> Commit 7532837d7b03b3ca5b9a63d77a5bd81dd23f3d9c ("The
>>>> -Wstringop-truncation option new in GCC 8 detects common misuses")
>>>> added __attribute_nonstring__ to bits/utmp.h, but it did not update
>>>> the parallel bits/utmpx.h header.
>>>>
>>>> 2019-08-12 Florian Weimer <fweimer@redhat.com>
>>>>
>>>> [BZ #24899]
>>>> * sysdeps/gnu/bits/utmpx.h (struct utmpx): Add
>>>> __attribute_nonstring__ to ut_line, ut_user, ut_host.
>>>
>>> I forgot to update the s390 header. The patch below fixes this.
>>>
>>> Thanks,
>>> Florian
>>>
>>> login: Add nonstring attributes to struct utmpx [BZ #24899]
>>>
>>> Commit 7532837d7b03b3ca5b9a63d77a5bd81dd23f3d9c ("The
>>> -Wstringop-truncation option new in GCC 8 detects common misuses")
>>> added __attribute_nonstring__ to bits/utmp.h, but it did not update
>>> the parallel bits/utmpx.h header.
>>>
>>> 2019-08-13 Florian Weimer <fweimer@redhat.com>
>>>
>>> [BZ #24899]
>>> * sysdeps/gnu/bits/utmpx.h (struct utmpx): Add
>>> __attribute_nonstring__ to ut_line, ut_user, ut_host.
>>> * sysdeps/unix/sysv/linux/s390/bits/utmpx.h (struct utmpx):
>>> Likewise.
>>
>> LGTM, thanks.
>>
>> Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
>
> Sorry, I noticed late that the ut_id nonstring attribute was missing as
> well (see __utmp_equal).
>
> Thanks,
> Florian
>
> login: Add nonstring attributes to struct utmp, struct utmpx [BZ #24899]
>
> Commit 7532837d7b03b3ca5b9a63d77a5bd81dd23f3d9c ("The
> -Wstringop-truncation option new in GCC 8 detects common misuses")
> added __attribute_nonstring__ to bits/utmp.h, but it did not update
> the parallel bits/utmpx.h header. In struct utmp, the nonstring
> attribute for ut_id was missing.
>
> 2019-08-13 Florian Weimer <fweimer@redhat.com>
>
> [BZ #24899]
> * sysdeps/gnu/bits/utmpx.h (struct utmpx): Add
> __attribute_nonstring__ to ut_line, ut_id, ut_user, ut_host.
> * sysdeps/unix/sysv/linux/s390/bits/utmpx.h (struct utmpx):
> Likewise.
> * sysdeps/gnu/bits/utmp.h (struct utmp): Add
> __attribute_nonstring__ to ut_id.
> * sysdeps/unix/sysv/linux/s390/bits/utmpx.h (struct utmp):
> Likewise.
Still LTGM. And we really need to consolidate the utmpx.h header.
>
> diff --git a/bits/utmp.h b/bits/utmp.h
> index 3c02dd4f3f..854b342164 100644
> --- a/bits/utmp.h
> +++ b/bits/utmp.h
> @@ -61,7 +61,8 @@ struct utmp
> pid_t ut_pid; /* Process ID of login process. */
> char ut_line[UT_LINESIZE]
> __attribute_nonstring__; /* Devicename. */
> - char ut_id[4]; /* Inittab ID. */
> + char ut_id[4]
> + __attribute_nonstring__; /* Inittab ID. */
> char ut_user[UT_NAMESIZE]
> __attribute_nonstring__; /* Username. */
> char ut_host[UT_HOSTSIZE]
> diff --git a/sysdeps/gnu/bits/utmpx.h b/sysdeps/gnu/bits/utmpx.h
> index 472a7d57d3..2beadbf587 100644
> --- a/sysdeps/gnu/bits/utmpx.h
> +++ b/sysdeps/gnu/bits/utmpx.h
> @@ -56,10 +56,14 @@ struct utmpx
> {
> short int ut_type; /* Type of login. */
> __pid_t ut_pid; /* Process ID of login process. */
> - char ut_line[__UT_LINESIZE]; /* Devicename. */
> - char ut_id[4]; /* Inittab ID. */
> - char ut_user[__UT_NAMESIZE]; /* Username. */
> - char ut_host[__UT_HOSTSIZE]; /* Hostname for remote login. */
> + char ut_line[__UT_LINESIZE]
> + __attribute_nonstring__; /* Devicename. */
> + char ut_id[4]
> + __attribute_nonstring__; /* Inittab ID. */
> + char ut_user[__UT_NAMESIZE]
> + __attribute_nonstring__; /* Username. */
> + char ut_host[__UT_HOSTSIZE]
> + __attribute_nonstring__; /* Hostname for remote login. */
> struct __exit_status ut_exit; /* Exit status of a process marked
> as DEAD_PROCESS. */
>
> diff --git a/sysdeps/unix/sysv/linux/s390/bits/utmp.h b/sysdeps/unix/sysv/linux/s390/bits/utmp.h
> index 862115c6f8..0569c3b784 100644
> --- a/sysdeps/unix/sysv/linux/s390/bits/utmp.h
> +++ b/sysdeps/unix/sysv/linux/s390/bits/utmp.h
> @@ -61,7 +61,8 @@ struct utmp
> pid_t ut_pid; /* Process ID of login process. */
> char ut_line[UT_LINESIZE]
> __attribute_nonstring__; /* Devicename. */
> - char ut_id[4]; /* Inittab ID. */
> + char ut_id[4]
> + __attribute_nonstring__; /* Inittab ID. */
> char ut_user[UT_NAMESIZE]
> __attribute_nonstring__; /* Username. */
> char ut_host[UT_HOSTSIZE]
> diff --git a/sysdeps/unix/sysv/linux/s390/bits/utmpx.h b/sysdeps/unix/sysv/linux/s390/bits/utmpx.h
> index ea3e860a2d..737d9dca05 100644
> --- a/sysdeps/unix/sysv/linux/s390/bits/utmpx.h
> +++ b/sysdeps/unix/sysv/linux/s390/bits/utmpx.h
> @@ -56,10 +56,14 @@ struct utmpx
> {
> short int ut_type; /* Type of login. */
> __pid_t ut_pid; /* Process ID of login process. */
> - char ut_line[__UT_LINESIZE]; /* Devicename. */
> - char ut_id[4]; /* Inittab ID. */
> - char ut_user[__UT_NAMESIZE]; /* Username. */
> - char ut_host[__UT_HOSTSIZE]; /* Hostname for remote login. */
> + char ut_line[__UT_LINESIZE]
> + __attribute_nonstring__; /* Devicename. */
> + char ut_id[4]
> + __attribute_nonstring__; /* Inittab ID. */
> + char ut_user[__UT_NAMESIZE]
> + __attribute_nonstring__; /* Username. */
> + char ut_host[__UT_HOSTSIZE]
> + __attribute_nonstring__; /* Hostname for remote login. */
> struct __exit_status ut_exit; /* Exit status of a process marked
> as DEAD_PROCESS. */
>
>