Upgrade Socket to CPAN version 2.008
authorRicardo Signes <rjbs@cpan.org>
Wed, 16 Jan 2013 14:36:47 +0000 (09:36 -0500)
committerRicardo Signes <rjbs@cpan.org>
Wed, 16 Jan 2013 14:36:49 +0000 (09:36 -0500)
2012/12/27
2.008   CHANGES:
         * Fix uninitialised memory read (RT82119)

2012/12/16
2.007   CHANGES:
         * Test %Config keys for definedness, not mere existence (RT79854)
         * Fix missing argument in sprintf in Socket.xs (from perl.git
           5d6dfea82e1c4b6, RT82007)

cpan/Socket/Makefile.PL
cpan/Socket/Socket.pm
cpan/Socket/Socket.xs

index 639a57c..99114d2 100644 (file)
@@ -13,7 +13,7 @@ my $seq = 0;
 sub check_for
 {
     my %args = @_;
-    return if exists $Config{$args{confkey}};
+    return if defined $Config{$args{confkey}};
 
     require ExtUtils::CBuilder;
     $cb ||= ExtUtils::CBuilder->new( quiet => 1 );
index a3a38d9..acc7bfc 100644 (file)
@@ -3,7 +3,7 @@ package Socket;
 use strict;
 { use 5.006001; }
 
-our $VERSION = '2.006_001';
+our $VERSION = '2.008';
 
 =head1 NAME
 
index 4bfaada..0690435 100644 (file)
@@ -895,7 +895,7 @@ inet_ntop(af, ip_address_sv)
        SV *    ip_address_sv
        CODE:
 #ifdef HAS_INETNTOP
-       STRLEN addrlen, struct_size;
+       STRLEN addrlen;
 #ifdef AF_INET6
        struct in6_addr addr;
        char str[INET6_ADDRSTRLEN];
@@ -910,19 +910,17 @@ inet_ntop(af, ip_address_sv)
 
        ip_address = SvPV(ip_address_sv, addrlen);
 
-       struct_size = sizeof(addr);
-
        switch(af) {
          case AF_INET:
            if(addrlen != 4)
                croak("Bad address length for Socket::inet_ntop on AF_INET;"
-                     " got %d, should be 4", addrlen);
+                     " got %"UVuf", should be 4", (UV)addrlen);
            break;
 #ifdef AF_INET6
          case AF_INET6:
            if(addrlen != 16)
                croak("Bad address length for Socket::inet_ntop on AF_INET6;"
-                     " got %d, should be 16", addrlen);
+                     " got %"UVuf", should be 16", (UV)addrlen);
            break;
 #endif
          default:
@@ -935,7 +933,13 @@ inet_ntop(af, ip_address_sv)
                      "Socket::inet_ntop", af);
        }
 
-       Copy(ip_address, &addr, sizeof addr, char);
+       if(addrlen < sizeof(addr)) {
+           Copy(ip_address, &addr, addrlen, char);
+           Zero(((char*)&addr) + addrlen, sizeof(addr) - addrlen, char);
+       }
+       else {
+           Copy(ip_address, &addr, sizeof addr, char);
+       }
        inet_ntop(af, &addr, str, sizeof str);
 
        ST(0) = sv_2mortal(newSVpvn(str, strlen(str)));