[Bug 171111] (libperl) could not run system-config-printer

bugzilla at redhat.com bugzilla at redhat.com
Mon Mar 13 12:49:20 UTC 2006


Please do not reply directly to this email. All additional
comments should be made in the comments box of this bug report.

Summary: (libperl) could not run system-config-printer


https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=171111


jlieskov at redhat.com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jlieskov at redhat.com




------- Additional Comments From jlieskov at redhat.com  2006-03-13 07:48 EST -------
Have run the test script from
https://rt.perl.org/rt3/Ticket/Display.html?id=38223 (will attach this file)
on 3 systems with 3 format of the "perl.h" file:

1, perl 5.8.8

./test.perl
(row,col) = (54,155)     => PASS

Form of the patch: 

#ifndef IOCPARM_LEN
#   ifdef IOCPARM_MASK
        /* on BSDish systems we're safe */
#       define IOCPARM_LEN(x)  (((x) >> 16) & IOCPARM_MASK)
#   else
#       if defined(_IOC_SIZE) && defined(__GLIBC__)
        /* 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
#       endif
#   endif
#endif

2, perl 5.8.6

./test.perl
(row,col) = (54,155)  => PASS

Form of the patch: 

#ifndef IOCPARM_LEN
#   ifdef IOCPARM_MASK
        /* on BSDish systes we're safe */
#       define IOCPARM_LEN(x)  (((x) >> 16) & IOCPARM_MASK)
#   else
        /* otherwise guess at what's safe */
#       define IOCPARM_LEN(x)   256
#   endif
#endif

=> seems it's enough to hardly set the value of IOCPARM_LEN(x) to 256
and don't take into account the Linux system's branch, because:

3, perl 5.8.6

./test.perl
Possible memory corruption: ioctl overflowed 3rd argument at ./test.perl line 5.

=> FAIL 

Form of the patch: 

#ifndef IOCPARM_LEN
#   ifdef IOCPARM_MASK
        /* on BSDish systems we're safe */
#       define IOCPARM_LEN(x)  (((x) >> 16) & IOCPARM_MASK)
#   else
#       ifdef _IOC_SIZE
                /* on Linux systems we're safe */
#               define IOCPARM_LEN(x) _IOC_SIZE(x)
#       else
                /* otherwise guess at what's safe (we're UNSAFE!) */
#               warning "unsafe assumption of IOCPARM_LEN=256"
#               define IOCPARM_LEN(x)   256
#       endif
#   endif
#endif

This patch doesn't work. 

So the solution is either to use patch without the linux branch, and hardly
set value of IOCPARM_LEN(x) to 256 (patch 2,), or take into account  
_IOC_SIZE and use the newest patch ( patch 1,).

-- 
Configure bugmail: https://bugzilla.redhat.com/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.




More information about the Fedora-perl-devel-list mailing list