]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Use statvfs64() for pathconf(_PC_NAME_MAX).
authorPeter TB Brett <peter@peter-b.co.uk>
Mon, 7 Apr 2014 20:56:12 +0000 (21:56 +0100)
committerOndřej Bílka <neleai@seznam.cz>
Wed, 9 Apr 2014 18:09:56 +0000 (20:09 +0200)
pathconf(_PC_NAME_MAX) was implemented on top of statfs().  The 32bit
version therefore fails EOVERFLOW if the filesystem blockcount is
sufficiently large.

Most pathconf() queries use statvfs64(), which avoids this issue.  This
patch modifies pathconf(_PC_NAME_MAX) to do likewise.

ChangeLog
NEWS
sysdeps/posix/pathconf.c

index ae8cab2b75ceca3992f3c2e0ae9b8c8a6ef29124..414e04356d35615a3a8e21ad76930de93fe4b43a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2014-04-09  Peter Brett  <peter@peter-b.co.uk>
+
+       [BZ #15514]
+       * sysdeps/posix/pathconf.c (__pathconf): Use statvfs64() for
+       pathconf(_PC_NAME_MAX).
+
 2014-04-09  Adhemerval Zanella  <azanella@linux.vnet.ibm.com>
 
        * nptl/sysdeps/pthread/pthread.h (__PTHREAD_MUTEX_HAVE_ELISION):
diff --git a/NEWS b/NEWS
index db8cc103ee4bad4d1c9148989d1a52670e0c86ae..441eae3be17c53f72a5d6d63de0d2f2fd43fa4aa 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -9,12 +9,12 @@ Version 2.20
 
 * The following bugs are resolved with this release:
 
-  6804, 13347, 15347, 15804, 15894, 16002, 16198, 16284, 16348, 16349,
-  16357, 16362, 16447, 16532, 16545, 16574, 16599, 16600, 16609, 16610,
-  16611, 16613, 16623, 16632, 16634, 16639, 16642, 16648, 16649, 16670,
-  16674, 16677, 16680, 16683, 16689, 16695, 16701, 16706, 16707, 16712,
-  16713, 16714, 16731, 16739, 16743, 16758, 16759, 16760, 16770, 16786,
-  16789, 16799, 16800, 16815.
+  6804, 13347, 15347, 15514, 15804, 15894, 16002, 16198, 16284, 16348,
+  16349, 16357, 16362, 16447, 16532, 16545, 16574, 16599, 16600, 16609,
+  16610, 16611, 16613, 16623, 16632, 16634, 16639, 16642, 16648, 16649,
+  16670, 16674, 16677, 16680, 16683, 16689, 16695, 16701, 16706, 16707,
+  16712, 16713, 16714, 16731, 16739, 16743, 16758, 16759, 16760, 16770,
+  16786, 16789, 16799, 16800, 16815.
 
 * Running the testsuite no longer terminates as soon as a test fails.
   Instead, a file tests.sum (xtests.sum from "make xcheck") is generated,
index 8aa55e08563bd5655a8e4ae193c15f08ddbb73ec..ac617d4a08dd4d1f6b8e5817a2c00fae4a52d77e 100644 (file)
@@ -65,10 +65,10 @@ __pathconf (const char *path, int name)
     case _PC_NAME_MAX:
 #ifdef NAME_MAX
       {
-       struct statfs buf;
+       struct statvfs64 sv;
        int save_errno = errno;
 
-       if (__statfs (path, &buf) < 0)
+       if (__statvfs64 (path, &sv) < 0)
          {
            if (errno == ENOSYS)
              {
@@ -79,15 +79,7 @@ __pathconf (const char *path, int name)
          }
        else
          {
-#ifdef _STATFS_F_NAMELEN
-           return buf.f_namelen;
-#else
-# ifdef _STATFS_F_NAME_MAX
-           return buf.f_name_max;
-# else
-           return NAME_MAX;
-# endif
-#endif
+           return sv.f_namemax;
          }
       }
 #else