about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>2022-05-31 12:38:55 -0300
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>2022-06-01 14:19:24 -0300
commitc5a75ecec8d7a54da7e53c7e64ba00d8673fe619 (patch)
tree7c0e22a674bcd2022f1e76fa658fea327590182f
parente4296958051874e2987719341f1a739642b9e8c7 (diff)
downloadglibc-c5a75ecec8d7a54da7e53c7e64ba00d8673fe619.tar.gz
glibc-c5a75ecec8d7a54da7e53c7e64ba00d8673fe619.tar.xz
glibc-c5a75ecec8d7a54da7e53c7e64ba00d8673fe619.zip
catgets: Use 64 bit stat for __open_catalog (BZ# 29211)
This is a missing spot initially from 52a5fe70a2c77935.

Checked on i686-linux-gnu.

(cherry picked from commit 634f566c3e20a8a620dbd869a0089e33c105a3ea)
-rw-r--r--NEWS1
-rw-r--r--catgets/open_catalog.c4
2 files changed, 3 insertions, 2 deletions
diff --git a/NEWS b/NEWS
index 5692715ef2..beaaf7a6c2 100644
--- a/NEWS
+++ b/NEWS
@@ -38,6 +38,7 @@ The following bugs are resolved with this release:
   [29208] libc: fpathconf(_PC_ASYNC_IO) is not y2038 aware
   [29209] libc: isfdtype is not y2038 aware
   [29210] network: ruserpass is not y2038 aware
+  [29211] libc: __open_catalog is not y2038 aware
 
 
 Version 2.35
diff --git a/catgets/open_catalog.c b/catgets/open_catalog.c
index 48c2a4b983..cb1d123cdb 100644
--- a/catgets/open_catalog.c
+++ b/catgets/open_catalog.c
@@ -39,7 +39,7 @@ __open_catalog (const char *cat_name, const char *nlspath, const char *env_var,
 		__nl_catd catalog)
 {
   int fd = -1;
-  struct stat64 st;
+  struct __stat64_t64 st;
   int swapping;
   size_t cnt;
   size_t max_offset;
@@ -193,7 +193,7 @@ __open_catalog (const char *cat_name, const char *nlspath, const char *env_var,
       return -1;
     }
 
-  if (__builtin_expect (__fstat64 (fd, &st), 0) < 0)
+  if (__glibc_unlikely (__fstat64_time64 (fd, &st) < 0))
     goto close_unlock_return;
 
   if (__builtin_expect (!S_ISREG (st.st_mode), 0)