Fix [perl #38223]; _IOC_SIZE() not always safe.
Gisle Aas [Fri, 13 Jan 2006 12:10:28 +0000 (12:10 +0000)]
p4raw-id: //depot/perl@26815

perl.h

diff --git a/perl.h b/perl.h
index 5d2d9b6..fb0f1e9 100644 (file)
--- a/perl.h
+++ b/perl.h
@@ -2977,8 +2977,8 @@ typedef pthread_key_t     perl_key;
 #      define IOCPARM_LEN(x)  (((x) >> 16) & IOCPARM_MASK)
 #   else
 #      if defined(_IOC_SIZE) && defined(__GLIBC__)
-       /* on Linux systems we're safe */
-#          define IOCPARM_LEN(x) _IOC_SIZE(x)
+       /* on Linux systems we're safe; except when we're not [perl #38223] */
+#          define IOCPARM_LEN(x) (_IOC_SIZE(x) < 256 ? 256 : _IOC_SIZE(x))
 #      else
        /* otherwise guess at what's safe */
 #          define IOCPARM_LEN(x)       256