if((cwd = getcwd(NULL, -1))) {
ST(0) = sv_2mortal(newSVpv(cwd, 0));
free(cwd);
-#ifndef INCOMPLETE_TAINTS
SvTAINTED_on(ST(0));
-#endif
XSRETURN(1);
}
XSRETURN_UNDEF;
use Exporter;
use vars qw(@ISA @EXPORT @EXPORT_OK $VERSION);
-$VERSION = '3.44';
+$VERSION = '3.45';
my $xs_version = $VERSION;
$VERSION =~ tr/_//;
{
#ifndef PERL_MICRO
-#ifndef INCOMPLETE_TAINTS
SvTAINTED_on(sv);
-#endif
#ifdef HAS_GETCWD
{
croak_xs_usage(cv, "");
getcwd_sv(TARG);
XSprePUSH; PUSHTARG;
-#ifndef INCOMPLETE_TAINTS
SvTAINTED_on(TARG);
-#endif
}
void
sv_setsv(TARG, &PL_sv_undef);
XSprePUSH; PUSHs(TARG);
-#ifndef INCOMPLETE_TAINTS
SvTAINTED_on(TARG);
-#endif
}
#if defined(WIN32) && !defined(UNDER_CE)
Safefree(dir);
XSprePUSH; PUSHs(TARG);
-#ifndef INCOMPLETE_TAINTS
SvTAINTED_on(TARG);
-#endif
}
#endif
ST(0)=sv_newmortal ();
if (getcwd (tmp,PATH_MAX+1)!=NULL)
sv_setpv ((SV*)ST(0),tmp);
-#ifndef INCOMPLETE_TAINTS
SvTAINTED_on(ST(0));
-#endif
}
XSRETURN (1);
}
RETVAL = getcwd(p, MAXPATHLEN);
ST(0) = sv_newmortal();
sv_setpv((SV*)ST(0), RETVAL);
-#ifndef INCOMPLETE_TAINTS
SvTAINTED_on(ST(0));
-#endif
}
XSRETURN(1);
}
if (ret >= 0) {
SvCUR_set(mstr, sizeof(long)+ret);
*SvEND(mstr) = '\0';
-#ifndef INCOMPLETE_TAINTS
/* who knows who has been playing with this message? */
SvTAINTED_on(mstr);
-#endif
}
return ret;
#else
SvCUR_set(mstr, msize);
*SvEND(mstr) = '\0';
SvSETMAGIC(mstr);
-#ifndef INCOMPLETE_TAINTS
/* who knows who has been playing with this shared memory? */
SvTAINTED_on(mstr);
-#endif
}
else {
STRLEN len;
RETVAL = _getcwd2(p, MAXPATHLEN);
ST(0) = sv_newmortal();
sv_setpv(ST(0), RETVAL);
-#ifndef INCOMPLETE_TAINTS
SvTAINTED_on(ST(0));
-#endif
}
XSRETURN(1);
}
*t = 0;
SvCUR_set(sv, t - SvPVX(sv));
}
-#ifndef INCOMPLETE_TAINTS
if (!items)
SvTAINTED_on(ST(0));
-#endif
}
XSRETURN(1);
}
}
-#ifndef INCOMPLETE_TAINTS
if (TAINTING_get && TAINT_get) {
SvTAINTED_on((SV*)new_re);
RX_TAINT_on(new_re);
}
-#endif
#if !defined(USE_ITHREADS)
/* can't change the optree at runtime either */
char buf[MAXPATHLEN];
int len;
-#ifndef INCOMPLETE_TAINTS
TAINT;
-#endif
tmps = POPpconstx;
len = readlink(tmps, buf, sizeof(buf) - 1);
if (len < 0)
#else
sv = newSVpv(dp->d_name, 0);
#endif
-#ifndef INCOMPLETE_TAINTS
if (!(IoFLAGS(io) & IOf_UNTAINT))
SvTAINTED_on(sv);
-#endif
mXPUSHs(sv);
} while (gimme == G_ARRAY);
sv_setpv(sv, pwent->pw_passwd);
# endif
-# ifndef INCOMPLETE_TAINTS
/* passwd is tainted because user himself can diddle with it.
* admittedly not much and in a very limited way, but nevertheless. */
SvTAINTED_on(sv);
-# endif
sv_setuid(PUSHmortal, pwent->pw_uid);
sv_setgid(PUSHmortal, pwent->pw_gid);
# else
PUSHs(sv = sv_mortalcopy(&PL_sv_no));
# endif
-# ifndef INCOMPLETE_TAINTS
/* pw_gecos is tainted because user himself can diddle with it. */
SvTAINTED_on(sv);
-# endif
mPUSHs(newSVpv(pwent->pw_dir, 0));
PUSHs(sv = sv_2mortal(newSVpv(pwent->pw_shell, 0)));
-# ifndef INCOMPLETE_TAINTS
/* pw_shell is tainted because user himself can diddle with it. */
SvTAINTED_on(sv);
-# endif
# ifdef PWEXPIRE
mPUSHi(pwent->pw_expire);
{
#ifndef PERL_MICRO
dVAR;
-#ifndef INCOMPLETE_TAINTS
SvTAINTED_on(sv);
-#endif
PERL_ARGS_ASSERT_GETCWD_SV;
EXTEND(SP,1);
SvPOK_on(sv);
ST(0) = sv;
-#ifndef INCOMPLETE_TAINTS
SvTAINTED_on(ST(0));
-#endif
XSRETURN(1);
}