Subject: | Odd 'a' |
Date: | Tue, 28 Feb 2017 18:33:53 -0500 |
To: | bug-Acme-EyeDrops [...] rt.cpan.org |
From: | Chris Fowler <linxdev [...] gmail.com> |
I've ran into an interesting problem. It may be a bug it may be my usage.
I wanted to test catching errors during execution and logging them.
Possibly syslog.
Version: Acme-EyeDrops-1.62
Uname: Linux cfowler-BayTrail-D 2.6.18-274.12.1.el5 #29-Ubuntu SMP Tue Feb
14 13:56:31 UTC 2012 i586 athlon i386 GNU/Linux
OS: CentOS 5.11
Under perl 5.8.8 this is not an issue. Under 5.24.0 and 5.22.3 I see it.
perl -V below. archname is incorrect. This is CentOS 5.11 i386 running
inside chroot on Ubuntu 64bit.
Summary of my perl5 (revision 5 version 24 subversion 0) configuration:
Platform:
osname=linux, osvers=2.6.18-274.12.1.el5, archname=x86_64-linux
uname='linux cfowler-baytrail-d 2.6.18-274.12.1.el5 #29-ubuntu smp tue
feb 14 13:56:31 utc 2012 i586 athlon i386 gnulinux '
config_args='-des -Dprefix=/usr/local -Dvendorprefix=/usr/local
-Dman1dir=/usr/local/share/man/man1 -Dman3dir=/usr/local/share/man/man3
-Dpager=/usr/bin/less -isR -Duseshrplib'
hint=recommended, useposix=true, d_sigaction=define
useithreads=undef, usemultiplicity=undef
use64bitint=undef, use64bitall=undef, uselongdouble=undef
usemymalloc=n, bincompat5005=undef
Compiler:
cc='cc', ccflags ='-fno-strict-aliasing -pipe -fstack-protector
-I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
-D_FORTIFY_SOURCE=2',
optimize='-O2',
cppflags='-fno-strict-aliasing -pipe -fstack-protector
-I/usr/local/include'
ccversion='', gccversion='4.1.2 20080704 (Red Hat 4.1.2-55)',
gccosandvers=''
intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234,
doublekind=3
d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12,
longdblkind=3
ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t',
lseeksize=8
alignbytes=4, prototype=define
Linker and Libraries:
ld='cc', ldflags =' -fstack-protector -L/usr/local/lib'
libpth=/usr/local/lib /usr/lib /lib
libs=-lpthread -lnsl -ldl -lm -lcrypt -lutil -lc
perllibs=-lpthread -lnsl -ldl -lm -lcrypt -lutil -lc
libc=libc-2.5.so, so=so, useshrplib=true, libperl=libperl.so
gnulibc_version='2.5'
Dynamic Linking:
dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E
-Wl,-rpath,/usr/local/lib/perl5/5.24.0/x86_64-linux/CORE'
cccdlflags='-fPIC', lddlflags='-shared -O2 -L/usr/local/lib
-fstack-protector'
Characteristics of this binary (from libperl):
Compile-time options: HAS_TIMES PERLIO_LAYERS PERL_COPY_ON_WRITE
PERL_DONT_CREATE_GVSV
PERL_HASH_FUNC_ONE_AT_A_TIME_HARD PERL_MALLOC_WRAP
PERL_PRESERVE_IVUV USE_LARGE_FILES USE_LOCALE
USE_LOCALE_COLLATE USE_LOCALE_CTYPE
USE_LOCALE_NUMERIC USE_LOCALE_TIME USE_PERLIO
USE_PERL_ATOF
Built under linux
Compiled at Feb 16 2017 15:56:15
@INC:
/usr/local/lib/perl5/site_perl/5.24.0/x86_64-linux
/usr/local/lib/perl5/site_perl/5.24.0
/usr/local/lib/perl5/vendor_perl/5.24.0/x86_64-linux
/usr/local/lib/perl5/vendor_perl/5.24.0
/usr/local/lib/perl5/5.24.0/x86_64-linux
/usr/local/lib/perl5/5.24.0
/usr/local/lib/perl5/site_perl
/usr/local/lib/perl5/vendor_perl
.
Program:
#!/usr/bin/perl
#
#
use strict;
sub main {
_does_not_exist();
return 0;
}
exit main;
Conversion:
#!/usr/bin/perl
eval {
eval eval '"'.
'#'.'!'.'/'.('['^'.').('['^'(').('['^')').'/'.('`'|'"').('`'|')').('`'|'.').'/'.
('['^'+').('`'|'%').('['^')').('`'|',').('!'^'+').'#'.('!'^'+').'#'.('!'^"\+").(
'!'^'+').('['^'.').('['^'(').('`'|'%').('{'^'[').('['^'(').('['^'/').('['^')').(
'`'|')').('`'|'#').('['^'/').';'.('!'^'+').('!'^'+').('['^'(').('['^'.').(('`')|
'"').('{'^'[').('`'|'-').('`'|'!').('`'|')').('`'|'.').('{'^'[').'\\'.'{'.("\!"^
'+').('*'^'#').'_'.('`'|'$').('`'|'/').('`'|'%').('['^'(').'_'.('`'|'.').(('`')|
'/').('['^'/').'_'.('`'|'%').('['^'#').('`'|')').('['^'(').('['^'/').'('.')'.';'
.('!'^'+').('*'^'#').('['^')').('`'|'%').('['^'/').('['^'.').('['^')').('`'|'.')
.('{'^'[').('^'^('`'|'.')).';'.('!'^'+').'\\'.'}'.('!'^'+').('`'|'%').('['^'#').
('`'|')').('['^'/').('{'^'[').('`'|'-').('`'|'!').('`'|')').('`'|'.').';'.("\!"^
'+').'"';$:='.'^'~';$~='@'|'(';$^=')'^'[';$/='`'|'.';$,='('^'}';$\='`'|('!');#;#
;die $@ if $@
};
if($@) {
print "ERROR: $@\n";
}
Options are TrapEvelDie =1 and Regex = 9
square.eye
######################################################################
######################################################################
######################################################################
######################################################################
######################################################################
Output:
[DEVEL system]$ perl hello.eye
ERROR: Undefined subroutine &main::_does_not_exist called at (eval 2) line
8.
*a*
[DEVEL system]$
The 'a' above is what I saw. I stumbled on this when I wanted to test
error capture. I ran into this problem earlier today and spent a few hours
one it thinking it was my program. I have not corrected that issue, but
tracked it down to print(). For the program I was working on I simply
converted to using syswrite() so I could drop that problem for now.
Chris