Change 19836 by [EMAIL PROTECTED] on 2003/06/22 15:55:13

        Debian fix from Brendan O'Dea:
        Bug#156284: the stucture used by pp_accept is too small to hold an
        IPv6 address.

Affected files ...

... //depot/perl/pp_sys.c#345 edit

Differences ...

==== //depot/perl/pp_sys.c#345 (text) ====
Index: perl/pp_sys.c
--- perl/pp_sys.c#344~19793~    Sun Jun 15 12:47:21 2003
+++ perl/pp_sys.c       Sun Jun 22 08:55:13 2003
@@ -2479,8 +2479,12 @@
     GV *ggv;
     register IO *nstio;
     register IO *gstio;
-    struct sockaddr saddr;     /* use a struct to avoid alignment problems */
-    Sock_size_t len = sizeof saddr;
+    char namebuf[MAXPATHLEN];
+#if (defined(VMS_DO_SOCKETS) && defined(DECCRTL_SOCKETS)) || defined(MPE) || 
defined(__QNXNTO__)
+    Sock_size_t len = sizeof (struct sockaddr_in);
+#else
+    Sock_size_t len = sizeof namebuf;
+#endif
     int fd;
 
     ggv = (GV*)POPs;
@@ -2496,7 +2500,7 @@
        goto nuts;
 
     nstio = GvIOn(ngv);
-    fd = PerlSock_accept(PerlIO_fileno(IoIFP(gstio)), (struct sockaddr *)&saddr, 
&len);
+    fd = PerlSock_accept(PerlIO_fileno(IoIFP(gstio)), (struct sockaddr *) namebuf, 
&len);
     if (fd < 0)
        goto badexit;
     if (IoIFP(nstio))
@@ -2515,14 +2519,14 @@
 #endif
 
 #ifdef EPOC
-    len = sizeof saddr;          /* EPOC somehow truncates info */
+    len = sizeof (struct sockaddr_in); /* EPOC somehow truncates info */
     setbuf( IoIFP(nstio), NULL); /* EPOC gets confused about sockets */
 #endif
 #ifdef __SCO_VERSION__
-    len = sizeof saddr;          /* OpenUNIX 8 somehow truncates info */
+    len = sizeof (struct sockaddr_in); /* OpenUNIX 8 somehow truncates info */
 #endif
 
-    PUSHp((char *)&saddr, len);
+    PUSHp(namebuf, len);
     RETURN;
 
 nuts:
End of Patch.

Reply via email to