mirror of
git://sourceware.org/git/glibc.git
synced 2024-11-21 01:12:26 +08:00
login: Check default sizes of structs utmp, utmpx, lastlog
The default <utmp-size.h> is for ports with a 64-bit time_t.
Ports with a 32-bit time_t or with __WORDSIZE_TIME64_COMPAT32=1
need to override it.
Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
(cherry picked from commit 4d4da5aab9
)
This commit is contained in:
parent
8e7f0eba01
commit
77d8f49058
@ -44,7 +44,7 @@ subdir-dirs = programs
|
||||
vpath %.c programs
|
||||
|
||||
tests := tst-utmp tst-utmpx tst-grantpt tst-ptsname tst-getlogin tst-updwtmpx \
|
||||
tst-pututxline-lockfail tst-pututxline-cache
|
||||
tst-pututxline-lockfail tst-pututxline-cache tst-utmp-size
|
||||
|
||||
# Empty compatibility library for old binaries.
|
||||
extra-libs := libutil
|
||||
|
33
login/tst-utmp-size.c
Normal file
33
login/tst-utmp-size.c
Normal file
@ -0,0 +1,33 @@
|
||||
/* Check expected sizes of struct utmp, struct utmpx, struct lastlog.
|
||||
Copyright (C) 2024 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <utmp.h>
|
||||
#include <utmpx.h>
|
||||
#include <utmp-size.h>
|
||||
|
||||
static int
|
||||
do_test (void)
|
||||
{
|
||||
_Static_assert (sizeof (struct utmp) == UTMP_SIZE, "struct utmp size");
|
||||
_Static_assert (sizeof (struct utmpx) == UTMP_SIZE, "struct utmpx size");
|
||||
_Static_assert (sizeof (struct lastlog) == LASTLOG_SIZE,
|
||||
"struct lastlog size");
|
||||
return 0;
|
||||
}
|
||||
|
||||
#include <support/test-driver.c>
|
3
sysdeps/arc/utmp-size.h
Normal file
3
sysdeps/arc/utmp-size.h
Normal file
@ -0,0 +1,3 @@
|
||||
/* arc has less padding than other architectures with 64-bit time_t. */
|
||||
#define UTMP_SIZE 392
|
||||
#define LASTLOG_SIZE 296
|
2
sysdeps/arm/utmp-size.h
Normal file
2
sysdeps/arm/utmp-size.h
Normal file
@ -0,0 +1,2 @@
|
||||
#define UTMP_SIZE 384
|
||||
#define LASTLOG_SIZE 292
|
2
sysdeps/csky/utmp-size.h
Normal file
2
sysdeps/csky/utmp-size.h
Normal file
@ -0,0 +1,2 @@
|
||||
#define UTMP_SIZE 384
|
||||
#define LASTLOG_SIZE 292
|
23
sysdeps/generic/utmp-size.h
Normal file
23
sysdeps/generic/utmp-size.h
Normal file
@ -0,0 +1,23 @@
|
||||
/* Expected sizes of utmp-related structures stored in files. 64-bit version.
|
||||
Copyright (C) 2024 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
/* Expected size, in bytes, of struct utmp and struct utmpx. */
|
||||
#define UTMP_SIZE 400
|
||||
|
||||
/* Expected size, in bytes, of struct lastlog. */
|
||||
#define LASTLOG_SIZE 296
|
2
sysdeps/hppa/utmp-size.h
Normal file
2
sysdeps/hppa/utmp-size.h
Normal file
@ -0,0 +1,2 @@
|
||||
#define UTMP_SIZE 384
|
||||
#define LASTLOG_SIZE 292
|
3
sysdeps/m68k/utmp-size.h
Normal file
3
sysdeps/m68k/utmp-size.h
Normal file
@ -0,0 +1,3 @@
|
||||
/* m68k has 2-byte alignment. */
|
||||
#define UTMP_SIZE 382
|
||||
#define LASTLOG_SIZE 292
|
2
sysdeps/microblaze/utmp-size.h
Normal file
2
sysdeps/microblaze/utmp-size.h
Normal file
@ -0,0 +1,2 @@
|
||||
#define UTMP_SIZE 384
|
||||
#define LASTLOG_SIZE 292
|
2
sysdeps/mips/utmp-size.h
Normal file
2
sysdeps/mips/utmp-size.h
Normal file
@ -0,0 +1,2 @@
|
||||
#define UTMP_SIZE 384
|
||||
#define LASTLOG_SIZE 292
|
2
sysdeps/nios2/utmp-size.h
Normal file
2
sysdeps/nios2/utmp-size.h
Normal file
@ -0,0 +1,2 @@
|
||||
#define UTMP_SIZE 384
|
||||
#define LASTLOG_SIZE 292
|
3
sysdeps/or1k/utmp-size.h
Normal file
3
sysdeps/or1k/utmp-size.h
Normal file
@ -0,0 +1,3 @@
|
||||
/* or1k has less padding than other architectures with 64-bit time_t. */
|
||||
#define UTMP_SIZE 392
|
||||
#define LASTLOG_SIZE 296
|
2
sysdeps/powerpc/utmp-size.h
Normal file
2
sysdeps/powerpc/utmp-size.h
Normal file
@ -0,0 +1,2 @@
|
||||
#define UTMP_SIZE 384
|
||||
#define LASTLOG_SIZE 292
|
2
sysdeps/riscv/utmp-size.h
Normal file
2
sysdeps/riscv/utmp-size.h
Normal file
@ -0,0 +1,2 @@
|
||||
#define UTMP_SIZE 384
|
||||
#define LASTLOG_SIZE 292
|
2
sysdeps/sh/utmp-size.h
Normal file
2
sysdeps/sh/utmp-size.h
Normal file
@ -0,0 +1,2 @@
|
||||
#define UTMP_SIZE 384
|
||||
#define LASTLOG_SIZE 292
|
2
sysdeps/sparc/utmp-size.h
Normal file
2
sysdeps/sparc/utmp-size.h
Normal file
@ -0,0 +1,2 @@
|
||||
#define UTMP_SIZE 384
|
||||
#define LASTLOG_SIZE 292
|
2
sysdeps/x86/utmp-size.h
Normal file
2
sysdeps/x86/utmp-size.h
Normal file
@ -0,0 +1,2 @@
|
||||
#define UTMP_SIZE 384
|
||||
#define LASTLOG_SIZE 292
|
Loading…
Reference in New Issue
Block a user