This is a bug report for perl from zefram@fysh.org, generated with the help of perlbug 1.43 running under perl 5.37.9. ----------------------------------------------------------------- <!--[Please describe your issue here]--> Refaliasing can be used to edit the structure of a readonly array\: ``` $ perl5.37.9 -MInternals=SetReadOnly -Mexperimental=refaliasing -lwe '@a = (11,22,33); SetReadOnly(\@a); \$a[1] = \555; print "@a"; splice(@a, 1, 1, 666)' 11 555 33 Modification of a read-only value attempted at -e line 1. ``` Observe that the refaliasing operation is able to replace the scalar at index 1\, whereas the splice operation attempting to do the same thing croaks because of the readonlyness\. The equivalent also happens with a readonly hash\: ``` $ perl5.37.9 -MInternals=SetReadOnly -Mexperimental=refaliasing -lwe '%a = (aa=>11,bb=>22,cc=>33); SetReadOnly(\%a); \$a{bb} = \555; print $a{bb}; delete $a{bb}' 555 Attempt to delete readonly key 'bb' from a restricted hash at -e line 1. ``` These readonly flags ought to be respected\. Refaliasing should not provide an ability to bypass them\. <!--[Please do not change anything below this line]--> <!------------------------------------------------------------------- --> --- **Flags** - category=core - severity=low --- **Perl configuration** ``` Site configuration information for perl 5.37.9: Configured by zefram at Wed Mar 1 02:31:43 GMT 2023. Summary of my perl5 (revision 5 version 37 subversion 9) configuration: Platform: osname=linux osvers=5.10.0-21-amd64 archname=x86_64-linux-thread-multi uname='linux barba.rous.org 5.10.0-21-amd64 #1 smp debian 5.10.162-1 (2023-01-21) x86_64 gnulinux ' config_args='-des -Dprefix=/home/zefram/usr/perl/perl_install/perl-5.37.9-i64-f52 -Duselargefiles -Dusethreads -Uafs -Ud_csh -Uusesfio -Uusenm -Duseshrplib -Dusedevel -Uversiononly -Ui_db' hint=recommended useposix=true d_sigaction=define useithreads=define usemultiplicity=define use64bitint=define use64bitall=define uselongdouble=undef usemymalloc=n default_inc_excludes_dot=define Compiler: cc='cc' ccflags ='-D_REENTRANT -D_GNU_SOURCE -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=2' optimize='-O2' cppflags='-D_REENTRANT -D_GNU_SOURCE -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include' ccversion='' gccversion='10.2.1 20210110' gccosandvers='' intsize=4 longsize=8 ptrsize=8 doublesize=8 byteorder=12345678 doublekind=3 d_longlong=define longlongsize=8 d_longdbl=define longdblsize=16 longdblkind=3 ivtype='long' ivsize=8 nvtype='double' nvsize=8 Off_t='off_t' lseeksize=8 alignbytes=8 prototype=define Linker and Libraries: ld='cc' ldflags =' -fstack-protector-strong -L/usr/local/lib' libpth=/usr/local/lib /usr/lib/x86_64-linux-gnu /usr/lib /lib/x86_64-linux-gnu /lib libs=-lpthread -lgdbm -ldb -ldl -lm -lcrypt -lutil -lc perllibs=-lpthread -ldl -lm -lcrypt -lutil -lc libc=libc-2.31.so so=so useshrplib=true libperl=libperl.so gnulibc_version='2.31' Dynamic Linking: dlsrc=dl_dlopen.xs dlext=so d_dlsymun=undef ccdlflags='-Wl,-E -Wl,-rpath,/home/zefram/usr/perl/perl_install/perl-5.37.9-i64-f52/lib/5.37.9/x86_64-linux-thread-multi/CORE' cccdlflags='-fPIC' lddlflags='-shared -O2 -L/usr/local/lib -fstack-protector-strong' --- @INC for perl 5.37.9: /home/zefram/usr/perl/perl_install/perl-5.37.9-i64-f52/lib/site_perl/5.37.9/x86_64-linux-thread-multi /home/zefram/usr/perl/perl_install/perl-5.37.9-i64-f52/lib/site_perl/5.37.9 /home/zefram/usr/perl/perl_install/perl-5.37.9-i64-f52/lib/5.37.9/x86_64-linux-thread-multi /home/zefram/usr/perl/perl_install/perl-5.37.9-i64-f52/lib/5.37.9 --- Environment for perl 5.37.9: HOME=/home/zefram LANG (unset) LANGUAGE (unset) LD_LIBRARY_PATH (unset) LOGDIR (unset) PATH=/home/zefram/usr/perl/perl_install/perl-5.37.9-i64-f52/bin:/home/zefram/usr/perl/util:/home/zefram/pub/x86_64-unknown-linux-gnu/bin:/home/zefram/pub/common/bin:/usr/bin:/bin:/usr/local/bin:/usr/games PERL_BADLANG (unset) SHELL=/usr/bin/zsh ```Thread Next