X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=pp_sys.c;h=e2c4111bdeb2e2c727b1aadf1e676fc7102d3d57;hb=6ec152c37130b7e4730fc56d5699a4b02f7c0f4a;hp=ab430367fa4ccf8212fead7c1889c4488deb03ef;hpb=42e0c139f8b9f929ff5eade043377a0a73a3e716;p=p5sagit%2Fp5-mst-13.2.git diff --git a/pp_sys.c b/pp_sys.c index ab43036..e2c4111 100644 --- a/pp_sys.c +++ b/pp_sys.c @@ -1561,6 +1561,10 @@ PP(pp_sysread) (struct sockaddr *)namebuf, &bufsize); if (count < 0) RETPUSHUNDEF; +#ifdef EPOC + /* Bogus return without padding */ + bufsize = sizeof (struct sockaddr_in); +#endif SvCUR_set(bufsv, count); *SvEND(bufsv) = '\0'; (void)SvPOK_only(bufsv); @@ -1634,8 +1638,7 @@ PP(pp_sysread) count = -1; } if (count < 0) { - if ((IoTYPE(io) == IoTYPE_WRONLY || IoIFP(io) == PerlIO_stdout() - || IoIFP(io) == PerlIO_stderr()) && ckWARN(WARN_IO)) + if ((IoTYPE(io) == IoTYPE_WRONLY) && ckWARN(WARN_IO)) { /* integrate with report_evil_fh()? */ char *name = NULL; @@ -2193,6 +2196,9 @@ PP(pp_socket) RETPUSHUNDEF; } + if (IoIFP(io)) + do_close(gv, FALSE); + TAINT_PROPER("socket"); fd = PerlSock_socket(domain, type, protocol); if (fd < 0) @@ -2251,6 +2257,11 @@ PP(pp_sockpair) RETPUSHUNDEF; } + if (IoIFP(io1)) + do_close(gv1, FALSE); + if (IoIFP(io2)) + do_close(gv2, FALSE); + TAINT_PROPER("socketpair"); if (PerlSock_socketpair(domain, type, protocol, fd) < 0) RETPUSHUNDEF;