Bug 7676 - Infinite loops in /usr/lib/perl5/5.00503/i386-linux/bits/socket.ph
Infinite loops in /usr/lib/perl5/5.00503/i386-linux/bits/socket.ph
Status: CLOSED DUPLICATE of bug 2297
Product: Red Hat Linux
Classification: Retired
Component: perl (Show other bugs)
6.1
All Linux
medium Severity medium
: ---
: ---
Assigned To: Crutcher Dunnavant
:
Depends On:
Blocks:
  Show dependency treegraph
 
Reported: 1999-12-07 22:29 EST by Jonathan Kamens
Modified: 2008-05-01 11:37 EDT (History)
0 users

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Environment:
Last Closed: 2000-01-15 10:14:53 EST
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---


Attachments (Terms of Use)

  None (edit)
Description Jonathan Kamens 1999-12-07 22:29:41 EST
A number of the subroutines defined in
/usr/lib/perl5/5.00503/i386-linux/bits/socket.ph introduce infinite loops,
such that if they are included the program will recurse until it runs out
of memory.

The following patch shows where the problems are and how to fix them.

--- socket.ph~	Sun Nov 21 21:33:51 1999
+++ socket.ph	Tue Dec  7 22:33:09 1999
@@ -9,12 +9,12 @@
     eval 'sub __need_NULL {1;}' unless defined(&__need_NULL);
     require 'stddef.ph';
     require 'sys/types.ph';
-    eval 'sub SOCK_STREAM () { &SOCK_STREAM;}' unless
defined(&SOCK_STREAM);
-    eval 'sub SOCK_DGRAM () { &SOCK_DGRAM;}' unless defined(&SOCK_DGRAM);
-    eval 'sub SOCK_RAW () { &SOCK_RAW;}' unless defined(&SOCK_RAW);
-    eval 'sub SOCK_RDM () { &SOCK_RDM;}' unless defined(&SOCK_RDM);
-    eval 'sub SOCK_SEQPACKET () { &SOCK_SEQPACKET;}' unless
defined(&SOCK_SEQPACKET);
-    eval 'sub SOCK_PACKET () { &SOCK_PACKET;}' unless
defined(&SOCK_PACKET);
+    eval 'sub SOCK_STREAM () { 1;}' unless defined(&SOCK_STREAM);
+    eval 'sub SOCK_DGRAM () { 2;}' unless defined(&SOCK_DGRAM);
+    eval 'sub SOCK_RAW () { 3;}' unless defined(&SOCK_RAW);
+    eval 'sub SOCK_RDM () { 4;}' unless defined(&SOCK_RDM);
+    eval 'sub SOCK_SEQPACKET () { 5;}' unless defined(&SOCK_SEQPACKET);
+    eval 'sub SOCK_PACKET () { 10;}' unless defined(&SOCK_PACKET);
     eval 'sub PF_UNSPEC () {0;}' unless defined(&PF_UNSPEC);
     eval 'sub PF_LOCAL () {1;}' unless defined(&PF_LOCAL);
     eval 'sub PF_UNIX () { &PF_LOCAL;}' unless defined(&PF_UNIX);
@@ -74,14 +74,14 @@
     eval 'sub SOL_X25 () {262;}' unless defined(&SOL_X25);
     eval 'sub SOMAXCONN () {128;}' unless defined(&SOMAXCONN);
     require 'bits/sockaddr.ph';
-    eval 'sub MSG_OOB () { &MSG_OOB;}' unless defined(&MSG_OOB);
-    eval 'sub MSG_PEEK () { &MSG_PEEK;}' unless defined(&MSG_PEEK);
-    eval 'sub MSG_DONTROUTE () { &MSG_DONTROUTE;}' unless
defined(&MSG_DONTROUTE);
+    eval 'sub MSG_OOB () { 1;}' unless defined(&MSG_OOB);
+    eval 'sub MSG_PEEK () { 2;}' unless defined(&MSG_PEEK);
+    eval 'sub MSG_DONTROUTE () { 4;}' unless defined(&MSG_DONTROUTE);
     if(defined(&__USE_GNU)) {
 	eval 'sub MSG_TRYHARD () { &MSG_DONTROUTE;}' unless
defined(&MSG_TRYHARD);
     }
-    eval 'sub MSG_CTRUNC () { &MSG_CTRUNC;}' unless defined(&MSG_CTRUNC);
-    eval 'sub MSG_PROXY () { &MSG_PROXY;}' unless defined(&MSG_PROXY);
+    eval 'sub MSG_CTRUNC () { 8;}' unless defined(&MSG_CTRUNC);
+    eval 'sub MSG_PROXY () { 16;}' unless defined(&MSG_PROXY);
     if(!defined (defined(&__STRICT_ANSI__) ? &__STRICT_ANSI__ : 0)  &&
defined (defined(&__GNUC__) ? &__GNUC__ : 0)  && (defined(&__GNUC__) ?
&__GNUC__ : 0) >= 2) {
     }
     if(!defined (defined(&__STRICT_ANSI__) ? &__STRICT_ANSI__ : 0)  &&
defined (defined(&__GNUC__) ? &__GNUC__ : 0)  && (defined(&__GNUC__) ?
&__GNUC__ : 0) >= 2) {
@@ -120,9 +120,9 @@
 	    eval 'sub _EXTERN_INLINE () { &extern  &__inline;}' unless
defined(&_EXTERN_INLINE);
 	}
     }
-    eval 'sub SCM_RIGHTS () { &SCM_RIGHTS;}' unless defined(&SCM_RIGHTS);
+    eval 'sub SCM_RIGHTS () { 1;}' unless defined(&SCM_RIGHTS);
     if(defined(&__USE_BSD)) {
-	eval 'sub SCM_CREDENTIALS () { &SCM_CREDENTIALS;}' unless
defined(&SCM_CREDENTIALS);
+	eval 'sub SCM_CREDENTIALS () { 2;}' unless defined(&SCM_CREDENTIALS);
     }
     require 'asm/socket.ph';
 }
Comment 1 Jeff Johnson 2000-01-15 10:14:59 EST
*** This bug has been marked as a duplicate of 2297 ***

Note You need to log in before you can comment on or make changes to this bug.