PerlIO::Via: check arg is non-NULL before using it.
authorTony Cook <tony@develop-help.com>
Wed, 7 Aug 2019 04:58:14 +0000 (14:58 +1000)
committerTony Cook <tony@develop-help.com>
Wed, 7 Aug 2019 04:58:14 +0000 (14:58 +1000)
I can't find any code in core that ends up calling the _pushed handler
with arg == NULL, but PerlIO_push() is API, and there might be
CPAN or DarkPAN code out there that does, escpecially since there's
a check for arg being non-NULL further down.

CID 169261.

ext/PerlIO-via/via.xs

index d91c685..8456242 100644 (file)
@@ -134,8 +134,8 @@ PerlIOVia_pushed(pTHX_ PerlIO * f, const char *mode, SV * arg,
 {
     IV code = PerlIOBase_pushed(aTHX_ f, mode, Nullsv, tab);
 
-    if (SvTYPE(arg) >= SVt_PVMG
-               && mg_findext(arg, PERL_MAGIC_ext, &PerlIOVia_tag)) {
+    if (arg && SvTYPE(arg) >= SVt_PVMG
+        && mg_findext(arg, PERL_MAGIC_ext, &PerlIOVia_tag)) {
        return code;
     }