summary refs log tree commit diff
path: root/elf
diff options
context:
space:
mode:
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>2021-03-02 17:06:02 -0300
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>2021-06-22 12:09:52 -0300
commit52a5fe70a2c77935afe807fb6e904e512ddd894e (patch)
treee17476a3ebc60b2e00aea93f24227199caaee8d4 /elf
parenta318262bc0081ab83e3f3c90e50462f99148605e (diff)
downloadglibc-52a5fe70a2c77935afe807fb6e904e512ddd894e.tar.gz
glibc-52a5fe70a2c77935afe807fb6e904e512ddd894e.tar.xz
glibc-52a5fe70a2c77935afe807fb6e904e512ddd894e.zip
Use 64 bit time_t stat internally
For the legacy ABI with supports 32-bit time_t it calls the 64-bit
time directly, since the LFS symbols calls the 64-bit time_t ones
internally.

Checked on i686-linux-gnu and x86_64-linux-gnu.

Reviewed-by: Lukasz Majewski <lukma@denx.de>
Diffstat (limited to 'elf')
-rw-r--r--elf/dl-load.c8
-rw-r--r--elf/dl-misc.c4
-rw-r--r--elf/dl-profile.c4
3 files changed, 8 insertions, 8 deletions
diff --git a/elf/dl-load.c b/elf/dl-load.c
index 918ec7546c..a08df001af 100644
--- a/elf/dl-load.c
+++ b/elf/dl-load.c
@@ -1946,11 +1946,11 @@ open_path (const char *name, size_t namelen, int mode,
 		{
 		  /* We failed to open machine dependent library.  Let's
 		     test whether there is any directory at all.  */
-		  struct stat64 st;
+		  struct __stat64_t64 st;
 
 		  buf[buflen - namelen - 1] = '\0';
 
-		  if (__stat64 (buf, &st) != 0
+		  if (__stat64_time64 (buf, &st) != 0
 		      || ! S_ISDIR (st.st_mode))
 		    /* The directory does not exist or it is no directory.  */
 		    this_dir->status[cnt] = nonexisting;
@@ -1968,9 +1968,9 @@ open_path (const char *name, size_t namelen, int mode,
 	      /* This is an extra security effort to make sure nobody can
 		 preload broken shared objects which are in the trusted
 		 directories and so exploit the bugs.  */
-	      struct stat64 st;
+	      struct __stat64_t64 st;
 
-	      if (__fstat64 (fd, &st) != 0
+	      if (__fstat64_time64 (fd, &st) != 0
 		  || (st.st_mode & S_ISUID) == 0)
 		{
 		  /* The shared object cannot be tested for being SUID
diff --git a/elf/dl-misc.c b/elf/dl-misc.c
index d4803bba4e..b256d792c6 100644
--- a/elf/dl-misc.c
+++ b/elf/dl-misc.c
@@ -43,11 +43,11 @@ void *
 _dl_sysdep_read_whole_file (const char *file, size_t *sizep, int prot)
 {
   void *result = MAP_FAILED;
-  struct stat64 st;
+  struct __stat64_t64 st;
   int fd = __open64_nocancel (file, O_RDONLY | O_CLOEXEC);
   if (fd >= 0)
     {
-      if (__fstat64 (fd, &st) >= 0)
+      if (__fstat64_time64 (fd, &st) >= 0)
 	{
 	  *sizep = st.st_size;
 
diff --git a/elf/dl-profile.c b/elf/dl-profile.c
index 35b03959bc..088c023d95 100644
--- a/elf/dl-profile.c
+++ b/elf/dl-profile.c
@@ -185,7 +185,7 @@ _dl_start_profile (void)
 {
   char *filename;
   int fd;
-  struct stat64 st;
+  struct __stat64_t64 st;
   const ElfW(Phdr) *ph;
   ElfW(Addr) mapstart = ~((ElfW(Addr)) 0);
   ElfW(Addr) mapend = 0;
@@ -342,7 +342,7 @@ _dl_start_profile (void)
       return;
     }
 
-  if (__fstat64 (fd, &st) < 0 || !S_ISREG (st.st_mode))
+  if (__fstat64_time64 (fd, &st) < 0 || !S_ISREG (st.st_mode))
     {
       /* Not stat'able or not a regular file => don't use it.  */
       errstr = "%s: cannot stat file: %s\n";