summaryrefslogtreecommitdiff
path: root/pp_sys.c
diff options
context:
space:
mode:
authorTomasz Konojacki <me@xenu.pl>2020-04-30 06:42:40 +0000
committerH.Merijn Brand <h.m.brand@xs4all.nl>2020-05-19 09:03:49 +0200
commit5fd8dd0d3bb7aa8dd0a0a8602deb24bb3323bd5c (patch)
treebeba1d61ff2073c745dc688ece8412a5d4cb65a3 /pp_sys.c
parent0a49e94867e32932f6fac0fc9297840a8b9ef6cf (diff)
downloadperl-5fd8dd0d3bb7aa8dd0a0a8602deb24bb3323bd5c.tar.gz
pp_sys.c: don't hardcode socket address buffer size
When it's possible, use sizeof(struct sockaddr_storage). fixes #17761
Diffstat (limited to 'pp_sys.c')
-rw-r--r--pp_sys.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/pp_sys.c b/pp_sys.c
index 9bae03dc08..8c26d23571 100644
--- a/pp_sys.c
+++ b/pp_sys.c
@@ -2763,9 +2763,13 @@ PP(pp_getpeername)
if (!IoIFP(io))
goto nuts;
- sv = sv_2mortal(newSV(257));
- (void)SvPOK_only(sv);
+#ifdef HAS_SOCKADDR_STORAGE
+ len = sizeof(struct sockaddr_storage);
+#else
len = 256;
+#endif
+ sv = sv_2mortal(newSV(len+1));
+ (void)SvPOK_only(sv);
SvCUR_set(sv, len);
*SvEND(sv) ='\0';
fd = PerlIO_fileno(IoIFP(io));