r49334 - in /branches/upstream/libsocket-getaddrinfo-perl/current: Build.PL Changes LICENSE META.yml README 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:40:41 UTC 2009
Author: jawnsy-guest
Date: Thu Dec 24 14:40:35 2009
New Revision: 49334
URL: http://svn.debian.org/wsvn/pkg-perl/?sc=1&rev=49334
Log:
[svn-upgrade] Integrating new upstream version, libsocket-getaddrinfo-perl (0.14)
Modified:
branches/upstream/libsocket-getaddrinfo-perl/current/Build.PL
branches/upstream/libsocket-getaddrinfo-perl/current/Changes
branches/upstream/libsocket-getaddrinfo-perl/current/LICENSE
branches/upstream/libsocket-getaddrinfo-perl/current/META.yml
branches/upstream/libsocket-getaddrinfo-perl/current/README
branches/upstream/libsocket-getaddrinfo-perl/current/lib/Socket/GetAddrInfo.pm
branches/upstream/libsocket-getaddrinfo-perl/current/lib/Socket/GetAddrInfo.xs
Modified: branches/upstream/libsocket-getaddrinfo-perl/current/Build.PL
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libsocket-getaddrinfo-perl/current/Build.PL?rev=49334&op=diff
==============================================================================
--- branches/upstream/libsocket-getaddrinfo-perl/current/Build.PL (original)
+++ branches/upstream/libsocket-getaddrinfo-perl/current/Build.PL Thu Dec 24 14:40:35 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: branches/upstream/libsocket-getaddrinfo-perl/current/Changes
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libsocket-getaddrinfo-perl/current/Changes?rev=49334&op=diff
==============================================================================
--- branches/upstream/libsocket-getaddrinfo-perl/current/Changes (original)
+++ branches/upstream/libsocket-getaddrinfo-perl/current/Changes Thu Dec 24 14:40:35 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: branches/upstream/libsocket-getaddrinfo-perl/current/LICENSE
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libsocket-getaddrinfo-perl/current/LICENSE?rev=49334&op=diff
==============================================================================
--- branches/upstream/libsocket-getaddrinfo-perl/current/LICENSE (original)
+++ branches/upstream/libsocket-getaddrinfo-perl/current/LICENSE Thu Dec 24 14:40:35 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: branches/upstream/libsocket-getaddrinfo-perl/current/META.yml
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libsocket-getaddrinfo-perl/current/META.yml?rev=49334&op=diff
==============================================================================
--- branches/upstream/libsocket-getaddrinfo-perl/current/META.yml (original)
+++ branches/upstream/libsocket-getaddrinfo-perl/current/META.yml Thu Dec 24 14:40:35 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: branches/upstream/libsocket-getaddrinfo-perl/current/README
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libsocket-getaddrinfo-perl/current/README?rev=49334&op=diff
==============================================================================
--- branches/upstream/libsocket-getaddrinfo-perl/current/README (original)
+++ branches/upstream/libsocket-getaddrinfo-perl/current/README Thu Dec 24 14:40:35 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: branches/upstream/libsocket-getaddrinfo-perl/current/lib/Socket/GetAddrInfo.pm
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libsocket-getaddrinfo-perl/current/lib/Socket/GetAddrInfo.pm?rev=49334&op=diff
==============================================================================
--- branches/upstream/libsocket-getaddrinfo-perl/current/lib/Socket/GetAddrInfo.pm (original)
+++ branches/upstream/libsocket-getaddrinfo-perl/current/lib/Socket/GetAddrInfo.pm Thu Dec 24 14:40:35 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: branches/upstream/libsocket-getaddrinfo-perl/current/lib/Socket/GetAddrInfo.xs
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libsocket-getaddrinfo-perl/current/lib/Socket/GetAddrInfo.xs?rev=49334&op=diff
==============================================================================
--- branches/upstream/libsocket-getaddrinfo-perl/current/lib/Socket/GetAddrInfo.xs (original)
+++ branches/upstream/libsocket-getaddrinfo-perl/current/lib/Socket/GetAddrInfo.xs Thu Dec 24 14:40:35 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