aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Schwab <schwab@linux-m68k.org>2018-01-28 18:48:04 +0100
committerAndreas Schwab <schwab@linux-m68k.org>2018-01-29 22:21:21 +0100
commit9a1793289b08339660985cb2baada60debc70bf2 (patch)
treea934b7ecc9cab380428be0eea4939083d3c57f4f
parente01e0ddc42e5909af0409d28bc4fd52ebfdbc7db (diff)
downloadglibc-9a1793289b08339660985cb2baada60debc70bf2.tar
glibc-9a1793289b08339660985cb2baada60debc70bf2.tar.gz
glibc-9a1793289b08339660985cb2baada60debc70bf2.tar.bz2
glibc-9a1793289b08339660985cb2baada60debc70bf2.zip
Reject invalid definitions of _POSIX_CHOWN_RESTRICTED, _POSIX_NO_TRUNC, _POSIX_VDISABLE
POSIX requires that the constants _POSIX_CHOWN_RESTRICTED, _POSIX_NO_TRUNC, and _POSIX_VDISABLE are always defined to a value other than -1.
-rw-r--r--ChangeLog6
-rw-r--r--sysdeps/posix/fpathconf.c21
-rw-r--r--sysdeps/posix/pathconf.c21
3 files changed, 24 insertions, 24 deletions
diff --git a/ChangeLog b/ChangeLog
index 6fefbee51e..07e751e6ed 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2018-01-29 Andreas Schwab <schwab@linux-m68k.org>
+
+ * sysdeps/posix/fpathconf.c (__fpathconf): Verify the values of
+ _POSIX_CHOWN_RESTRICTED, _POSIX_NO_TRUNC, _POSIX_VDISABLE.
+ * sysdeps/posix/pathconf.c (__pathconf): Likewise.
+
2018-01-29 Samuel Thibault <samuel.thibault@ens-lyon.org>
* mach/Versions: Fix version when __mach_host_self_ was added.
diff --git a/sysdeps/posix/fpathconf.c b/sysdeps/posix/fpathconf.c
index 80af77e148..a9d164564e 100644
--- a/sysdeps/posix/fpathconf.c
+++ b/sysdeps/posix/fpathconf.c
@@ -103,25 +103,22 @@ __fpathconf (int fd, int name)
#endif
case _PC_CHOWN_RESTRICTED:
-#ifdef _POSIX_CHOWN_RESTRICTED
- return _POSIX_CHOWN_RESTRICTED;
-#else
- return -1;
+#if _POSIX_CHOWN_RESTRICTED == -1
+# error "Invalid value for _POSIX_CHOWN_RESTRICTED"
#endif
+ return _POSIX_CHOWN_RESTRICTED;
case _PC_NO_TRUNC:
-#ifdef _POSIX_NO_TRUNC
- return _POSIX_NO_TRUNC;
-#else
- return -1;
+#if _POSIX_NO_TRUNC == -1
+# error "Invalid value for _POSIX_NO_TRUNC"
#endif
+ return _POSIX_NO_TRUNC;
case _PC_VDISABLE:
-#ifdef _POSIX_VDISABLE
- return _POSIX_VDISABLE;
-#else
- return -1;
+#if _POSIX_VDISABLE == -1
+# error "Invalid value for _POSIX_VDISABLE"
#endif
+ return _POSIX_VDISABLE;
case _PC_SYNC_IO:
#ifdef _POSIX_SYNC_IO
diff --git a/sysdeps/posix/pathconf.c b/sysdeps/posix/pathconf.c
index 2059e55b4f..0f893ec1ba 100644
--- a/sysdeps/posix/pathconf.c
+++ b/sysdeps/posix/pathconf.c
@@ -101,25 +101,22 @@ __pathconf (const char *path, int name)
#endif
case _PC_CHOWN_RESTRICTED:
-#ifdef _POSIX_CHOWN_RESTRICTED
- return _POSIX_CHOWN_RESTRICTED;
-#else
- return -1;
+#if _POSIX_CHOWN_RESTRICTED == -1
+# error "Invalid value for _POSIX_CHOWN_RESTRICTED"
#endif
+ return _POSIX_CHOWN_RESTRICTED;
case _PC_NO_TRUNC:
-#ifdef _POSIX_NO_TRUNC
- return _POSIX_NO_TRUNC;
-#else
- return -1;
+#if _POSIX_NO_TRUNC == -1
+# error "Invalid value for _POSIX_NO_TRUNC"
#endif
+ return _POSIX_NO_TRUNC;
case _PC_VDISABLE:
-#ifdef _POSIX_VDISABLE
- return _POSIX_VDISABLE;
-#else
- return -1;
+#if _POSIX_VDISABLE == -1
+# error "Invalid value for _POSIX_VDISABLE"
#endif
+ return _POSIX_VDISABLE;
case _PC_SYNC_IO:
#ifdef _POSIX_SYNC_IO