r49336 - in /trunk/libsocket-getaddrinfo-perl: Build.PL Changes LICENSE META.yml README debian/changelog lib/Socket/GetAddrInfo.pm lib/Socket/GetAddrInfo.xs

jawnsy-guest at users.alioth.debian.org jawnsy-guest at users.alioth.debian.org
Thu Dec 24 14:45:52 UTC 2009


Author: jawnsy-guest
Date: Thu Dec 24 14:45:45 2009
New Revision: 49336

URL: http://svn.debian.org/wsvn/pkg-perl/?sc=1&rev=49336
Log:
New upstream release

Modified:
    trunk/libsocket-getaddrinfo-perl/Build.PL
    trunk/libsocket-getaddrinfo-perl/Changes
    trunk/libsocket-getaddrinfo-perl/LICENSE
    trunk/libsocket-getaddrinfo-perl/META.yml
    trunk/libsocket-getaddrinfo-perl/README
    trunk/libsocket-getaddrinfo-perl/debian/changelog
    trunk/libsocket-getaddrinfo-perl/lib/Socket/GetAddrInfo.pm
    trunk/libsocket-getaddrinfo-perl/lib/Socket/GetAddrInfo.xs

Modified: trunk/libsocket-getaddrinfo-perl/Build.PL
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libsocket-getaddrinfo-perl/Build.PL?rev=49336&op=diff
==============================================================================
--- trunk/libsocket-getaddrinfo-perl/Build.PL (original)
+++ trunk/libsocket-getaddrinfo-perl/Build.PL Thu Dec 24 14:45:45 2009
@@ -4,7 +4,7 @@
 use Module::Build;
 
 eval { require ExtUtils::CBuilder; 1 } or
-   die "OS unsupported";
+   die "OS unsupported - missing ExtUtils::CBuilder";
 
 my $HAVE_SOCKADDR_SA_LEN;
 

Modified: trunk/libsocket-getaddrinfo-perl/Changes
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libsocket-getaddrinfo-perl/Changes?rev=49336&op=diff
==============================================================================
--- trunk/libsocket-getaddrinfo-perl/Changes (original)
+++ trunk/libsocket-getaddrinfo-perl/Changes Thu Dec 24 14:45:45 2009
@@ -1,4 +1,10 @@
 Revision history for Socket-GetAddrInfo
+
+0.14    BUGFIXES:
+         * Don't leak memory on getnameinfo() failures
+         * Avoid possible sockaddr alignment errors by allocating/copying a
+           new buffer
+         (thanks to Zefram)
 
 0.13    CHANGES:
          * Don't warn if only importing symbolic constants; test this

Modified: trunk/libsocket-getaddrinfo-perl/LICENSE
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libsocket-getaddrinfo-perl/LICENSE?rev=49336&op=diff
==============================================================================
--- trunk/libsocket-getaddrinfo-perl/LICENSE (original)
+++ trunk/libsocket-getaddrinfo-perl/LICENSE Thu Dec 24 14:45:45 2009
@@ -1,4 +1,5 @@
-This software is copyright (c) 2009 by Paul Evans <leonerd at leonerd.org.uk>.
+This software is copyright (c) 2009 by Paul Evans <leonerd at leonerd.org.uk> & With thanks to Zefram <zefram at fysh.org> for help with fixing some bugs in the
+XS code..
 
 This is free software; you can redistribute it and/or modify it under
 the same terms as the Perl 5 programming language system itself.
@@ -12,7 +13,8 @@
 
 --- The GNU General Public License, Version 1, February 1989 ---
 
-This software is Copyright (c) 2009 by Paul Evans <leonerd at leonerd.org.uk>.
+This software is Copyright (c) 2009 by Paul Evans <leonerd at leonerd.org.uk> & With thanks to Zefram <zefram at fysh.org> for help with fixing some bugs in the
+XS code..
 
 This is free software, licensed under:
 
@@ -270,7 +272,8 @@
 
 --- The Artistic License 1.0 ---
 
-This software is Copyright (c) 2009 by Paul Evans <leonerd at leonerd.org.uk>.
+This software is Copyright (c) 2009 by Paul Evans <leonerd at leonerd.org.uk> & With thanks to Zefram <zefram at fysh.org> for help with fixing some bugs in the
+XS code..
 
 This is free software, licensed under:
 

Modified: trunk/libsocket-getaddrinfo-perl/META.yml
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libsocket-getaddrinfo-perl/META.yml?rev=49336&op=diff
==============================================================================
--- trunk/libsocket-getaddrinfo-perl/META.yml (original)
+++ trunk/libsocket-getaddrinfo-perl/META.yml Thu Dec 24 14:45:45 2009
@@ -1,8 +1,11 @@
 ---
 name: Socket-GetAddrInfo
-version: 0.13
+version: 0.14
 author:
   - 'Paul Evans <leonerd at leonerd.org.uk>'
+  - |-
+    With thanks to Zefram <zefram at fysh.org> for help with fixing some bugs in the
+    XS code.
 abstract: |-
   RFC 2553's C<getaddrinfo> and C<getnameinfo>
   functions.
@@ -23,7 +26,7 @@
 provides:
   Socket::GetAddrInfo:
     file: lib/Socket/GetAddrInfo.pm
-    version: 0.13
+    version: 0.14
 generated_by: Module::Build version 0.35
 meta-spec:
   url: http://module-build.sourceforge.net/META-spec-v1.4.html

Modified: trunk/libsocket-getaddrinfo-perl/README
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libsocket-getaddrinfo-perl/README?rev=49336&op=diff
==============================================================================
--- trunk/libsocket-getaddrinfo-perl/README (original)
+++ trunk/libsocket-getaddrinfo-perl/README Thu Dec 24 14:45:45 2009
@@ -197,3 +197,6 @@
 AUTHOR
     Paul Evans <leonerd at leonerd.org.uk>
 
+    With thanks to Zefram <zefram at fysh.org> for help with fixing some bugs
+    in the XS code.
+

Modified: trunk/libsocket-getaddrinfo-perl/debian/changelog
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libsocket-getaddrinfo-perl/debian/changelog?rev=49336&op=diff
==============================================================================
--- trunk/libsocket-getaddrinfo-perl/debian/changelog (original)
+++ trunk/libsocket-getaddrinfo-perl/debian/changelog Thu Dec 24 14:45:45 2009
@@ -1,9 +1,13 @@
-libsocket-getaddrinfo-perl (0.13-2) UNRELEASED; urgency=low
+libsocket-getaddrinfo-perl (0.14-1) UNRELEASED; urgency=low
 
+  [ gregor herrmann ]
   * debian/control: Changed: (build-)depend on perl instead of perl-
     modules.
 
- -- gregor herrmann <gregoa at debian.org>  Sun, 20 Dec 2009 15:15:58 +0100
+  [ Jonathan Yu ]
+  * New upstream release
+
+ -- Jonathan Yu <jawnsy at cpan.org>  Thu, 24 Dec 2009 06:33:50 -0500
 
 libsocket-getaddrinfo-perl (0.13-1) unstable; urgency=low
 

Modified: trunk/libsocket-getaddrinfo-perl/lib/Socket/GetAddrInfo.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libsocket-getaddrinfo-perl/lib/Socket/GetAddrInfo.pm?rev=49336&op=diff
==============================================================================
--- trunk/libsocket-getaddrinfo-perl/lib/Socket/GetAddrInfo.pm (original)
+++ trunk/libsocket-getaddrinfo-perl/lib/Socket/GetAddrInfo.pm Thu Dec 24 14:45:45 2009
@@ -18,7 +18,7 @@
 
 BEGIN {
    our @ISA = qw( Exporter );
-   our $VERSION = "0.13";
+   our $VERSION = "0.14";
 
    our @EXPORT = qw(
       getaddrinfo
@@ -560,3 +560,6 @@
 =head1 AUTHOR
 
 Paul Evans <leonerd at leonerd.org.uk>
+
+With thanks to Zefram <zefram at fysh.org> for help with fixing some bugs in the
+XS code.

Modified: trunk/libsocket-getaddrinfo-perl/lib/Socket/GetAddrInfo.xs
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libsocket-getaddrinfo-perl/lib/Socket/GetAddrInfo.xs?rev=49336&op=diff
==============================================================================
--- trunk/libsocket-getaddrinfo-perl/lib/Socket/GetAddrInfo.xs (original)
+++ trunk/libsocket-getaddrinfo-perl/lib/Socket/GetAddrInfo.xs Thu Dec 24 14:45:45 2009
@@ -11,6 +11,11 @@
 #include <sys/types.h>
 #include <sys/socket.h>
 #include <netdb.h>
+
+// Newx was new in 5.9.3
+#ifndef Newx
+# define Newx(p,n,t) New(0,p,n,t)
+#endif
 
 SV *err_to_SV(int err)
 {
@@ -174,41 +179,39 @@
     int  flags
 
   PREINIT:
-    SV *host;
-    SV *serv;
-    struct sockaddr *sa;
+    char host[1024];
+    char serv[256];
+    char *sa; /* we'll cast to struct sockaddr * when necessary */
     STRLEN addr_len;
     int err;
 
   PPCODE:
-    host = newSVpvn("", 1023);
-    serv = newSVpvn("", 255);
-
-    /* If we need to set sa_len, then we'd best take a copy of the SV */
+    if(!SvPOK(addr))
+      croak("addr is not a string");
+
+    addr_len = SvCUR(addr);
+
+    /* We need to ensure the sockaddr is aligned, because a random SvPV might
+     * not be due to SvOOK */
+    Newx(sa, addr_len, char);
+    Copy(SvPV_nolen(addr), sa, addr_len, char);
 #if HAVE_SOCKADDR_SA_LEN
-    {
-      SV *addr_copy = sv_mortalcopy(addr);
-      sa = (struct sockaddr *) SvPV(addr_copy, addr_len);
-      sa->sa_len = addr_len;
-    }
-#else
-    sa = (struct sockaddr *) SvPV(addr, addr_len);
-#endif
-
-    err = getnameinfo(sa, addr_len,
-      SvPV_nolen(host), SvCUR(host) + 1, // Perl doesn't include final NUL
-      SvPV_nolen(serv), SvCUR(serv) + 1, // Perl doesn't include final NUL
+    ((struct sockaddr *)sa)->sa_len = addr_len;
+#endif
+
+    err = getnameinfo((struct sockaddr *)sa, addr_len,
+      host, sizeof(host),
+      serv, sizeof(serv),
       flags);
+
+    Safefree(sa);
 
     XPUSHs(err_to_SV(err));
 
     if(err)
       XSRETURN(1);
 
-    SvCUR_set(host, strlen(SvPV_nolen(host)));
-    SvCUR_set(serv, strlen(SvPV_nolen(serv)));
-
-    XPUSHs(sv_2mortal(host));
-    XPUSHs(sv_2mortal(serv));
+    XPUSHs(sv_2mortal(newSVpv(host, 0)));
+    XPUSHs(sv_2mortal(newSVpv(serv, 0)));
 
     XSRETURN(3);




More information about the Pkg-perl-cvs-commits mailing list