uutils / uutils/coreutils

bug(ls): Invalid UTF8 quoting style not get a warning

Open Beginner friendly
#14,725 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

U - ls
Dominant language
Rust
Stars
24.1k
Forks
2k
Avg merge
1d 5h
Merged PRs (30d)
365

Description

Hi, uutils maintenrs

that can be reproduced via

relunsec@relunsec:~/software/coreutils/target/debug$ QUOTING_STYLE=$'\xFF' ./ls
 1o6iHq6D6FKsl7187mIs65fv8LQirsHfB	 dd.d	       kill			    libuu_dir.d		   libuu_ls.d		 libuu_realpath.d       libuu_test.d	      md5sum				   readlink.d	 tee
'NQzhvkt8ZzkfWcWjY6ZdytxObS4EhkxZL.a\'	 deps	       kill.d			    libuu_dir.rlib	   libuu_ls.rlib	 libuu_realpath.rlib    libuu_test.rlib	      md5sum.d				   realpath	 tee.d
 a					 df	       libstdbuf.d		    libuu_dircolors.d	   libuu_md5sum.d	 libuu_rm.d	        libuu_timeout.d	      mkdir				   realpath.d	 test
 a.txt					 df.d	       libstdbuf.so		    libuu_dircolors.rlib   libuu_md5sum.rlib	 libuu_rm.rlib	        libuu_timeout.rlib    mkdir.d				   rm		 test.d
 a@					 dir	       libuu_arch.d		    libuu_dirname.d	   libuu_mkdir.d	 libuu_rmdir.d	        libuu_touch.d	      mkfifo				   rm.d		 timeout
 arch					 dir.d	       libuu_arch.rlib		    libuu_dirname.rlib	   libuu_mkdir.rlib	 libuu_rmdir.rlib       libuu_touch.rlib      mkfifo.d				   rmdir	 timeout.d
 arch.d					 dircolors     libuu_b2sum.d		    libuu_du.d		   libuu_mkfifo.d	 libuu_runcon.d	        libuu_tr.d	      mknod				   rmdir.d	 touch
 a~					 dircolors.d   libuu_b2sum.rlib		    libuu_du.rlib	   libuu_mkfifo.rlib	 libuu_runcon.rlib      libuu_tr.rlib	      mknod.d				   runcon	 touch.d
 b					 dirname       libuu_base32.d		    libuu_echo.d	   libuu_mknod.d	 libuu_seq.d	        libuu_true.d	      mktemp				   runcon.d	 tr
 b2sum					 dirname.d     libuu_base32.rlib	    libuu_echo.rlib	   libuu_mknod.rlib	 libuu_seq.rlib	        libuu_true.rlib	      mktemp.d				   seq		 tr.d
 b2sum.d				 du	       libuu_base64.d		    libuu_env.d		   libuu_mktemp.d	 libuu_sha1sum.d        libuu_truncate.d      more				   seq.d	 true
 base32					 du.d	       libuu_base64.rlib	    libuu_env.rlib	   libuu_mktemp.rlib	 libuu_sha1sum.rlib     libuu_truncate.rlib   more.d				   sgYGgVDm78	 true.d
 base32.d				 eBr	       libuu_basename.d		    libuu_expand.d	   libuu_more.d		 libuu_sha224sum.d      libuu_tsort.d	      mv				   sha1sum	 truncate
 base64					 echo	       libuu_basename.rlib	    libuu_expand.rlib	   libuu_more.rlib	 libuu_sha224sum.rlib   libuu_tsort.rlib      mv.d				   sha1sum.d	 truncate.d
 base64.d				 echo.d	       libuu_basenc.d		    libuu_expr.d	   libuu_mv.d		 libuu_sha256sum.d      libuu_tty.d	      nice				   sha224sum	 tsort
 basename				 env	       libuu_basenc.rlib	    libuu_expr.rlib	   libuu_mv.rlib	 libuu_sha256sum.rlib   libuu_tty.rlib	      nice.d				   sha224sum.d	 tsort.d
 basename.d				 env.d	       libuu_cat.d		    libuu_factor.d	   libuu_nice.d		 libuu_sha384sum.d      libuu_uname.d	      nl				   sha256sum	 tty
 basenc					 examples      libuu_cat.rlib		    libuu_factor.rlib	   libuu_nice.rlib	 libuu_sha384sum.rlib   libuu_uname.rlib      nl.d				   sha256sum.d	 tty.d
 basenc.d				 expand	       libuu_chcon.d		    libuu_false.d	   libuu_nl.d		 libuu_sha512sum.d      libuu_unexpand.d      nohup				   sha384sum	 uname
 build					 expand.d      libuu_chcon.rlib		    libuu_false.rlib	   libuu_nl.rlib	 libuu_sha512sum.rlib   libuu_unexpand.rlib   nohup.d				   sha384sum.d	 uname.d
 c					 expr	       libuu_checksum_common.d	    libuu_fmt.d		   libuu_nohup.d	 libuu_shred.d	        libuu_uniq.d	      nohup.out				   sha512sum	 unexpand
 cat					 expr.d	       libuu_checksum_common.rlib   libuu_fmt.rlib	   libuu_nohup.rlib	 libuu_shred.rlib       libuu_uniq.rlib	      nproc				   sha512sum.d	 unexpand.d
 cat.d					 factor	       libuu_chgrp.d		    libuu_fold.d	   libuu_nproc.d	 libuu_shuf.d	        libuu_unlink.d	      nproc.d				   shred	 uniq
 chcon					 factor.d      libuu_chgrp.rlib		    libuu_fold.rlib	   libuu_nproc.rlib	 libuu_shuf.rlib        libuu_unlink.rlib     numfmt				   shred.d	 uniq.d
 chcon.d				 false	       libuu_chmod.d		    libuu_groups.d	   libuu_numfmt.d	 libuu_sleep.d	        libuu_uptime.d	      numfmt.d				   shuf		 unlink
 chgrp					 false.d       libuu_chmod.rlib		    libuu_groups.rlib	   libuu_numfmt.rlib	 libuu_sleep.rlib       libuu_uptime.rlib     od				   shuf.d	 unlink.d
 chgrp.d				 fmt	       libuu_chown.d		    libuu_head.d	   libuu_od.d		 libuu_sort.d	        libuu_users.d	      od.d				   sleep	 uptime
 chmod					 fmt.d	       libuu_chown.rlib		    libuu_head.rlib	   libuu_od.rlib	 libuu_sort.rlib        libuu_users.rlib      paste				   sleep.d	 uptime.d
 chmod.d				 fold	       libuu_chroot.d		    libuu_hostid.d	   libuu_paste.d	 libuu_split.d	        libuu_vdir.d	      paste.d				   sort		 users
 chown					 fold.d	       libuu_chroot.rlib	    libuu_hostid.rlib	   libuu_paste.rlib	 libuu_split.rlib       libuu_vdir.rlib	      pathchk				   sort.d	 users.d
 chown.d				 g	       libuu_cksum.d		    libuu_hostname.d	   libuu_pathchk.d	 libuu_stat.d	        libuu_wc.d	      pathchk.d				   split	 vdir
 chroot					 groups	       libuu_cksum.rlib		    libuu_hostname.rlib	   libuu_pathchk.rlib	 libuu_stat.rlib        libuu_wc.rlib	      pinky				   split.d	 vdir.d
 chroot.d				 groups.d      libuu_comm.d		    libuu_id.d		   libuu_pinky.d	 libuu_stdbuf.d	        libuu_who.d	      pinky.d				   stat		 wc
 cksum					 head	       libuu_comm.rlib		    libuu_id.rlib	   libuu_pinky.rlib	 libuu_stdbuf.rlib      libuu_who.rlib	      pipe				   stat.d	 wc.d
 cksum.d				 head.d	       libuu_cp.d		    libuu_install.d	   libuu_pr.d		 libuu_stty.d	        libuu_whoami.d	      pr				   stdbuf	 who
 comm					 hostid	       libuu_cp.rlib		    libuu_install.rlib	   libuu_pr.rlib	 libuu_stty.rlib        libuu_whoami.rlib     pr.d				   stdbuf.d	 who.d
 comm.d					 hostid.d      libuu_csplit.d		    libuu_join.d	   libuu_printenv.d	 libuu_sum.d	        libuu_yes.d	      printenv				   stty		 whoami
 cp					 hostname      libuu_csplit.rlib	    libuu_join.rlib	   libuu_printenv.rlib	 libuu_sum.rlib	        libuu_yes.rlib	      printenv.d			   stty.d	 whoami.d
 cp.d					 hostname.d    libuu_cut.d		    libuu_kill.d	   libuu_printf.d	 libuu_sync.d	        link		      printf				   sum		 yes
 csplit					 id	       libuu_cut.rlib		    libuu_kill.rlib	   libuu_printf.rlib	 libuu_sync.rlib        link.d		      printf.d				   sum.d	 yes.d
 csplit.d				 id.d	       libuu_date.d		    libuu_link.d	   libuu_ptx.d		 libuu_tac.d	        ln		      ptx				   sync		 z
 cut					 incremental   libuu_date.rlib		    libuu_link.rlib	   libuu_ptx.rlib	 libuu_tac.rlib	        ln.d		      ptx.d				   sync.d
 cut.d					 install       libuu_dd.d		    libuu_ln.d		   libuu_pwd.d		 libuu_tail.d	        logname		      pwd				   tac
 date					 install.d     libuu_dd.rlib		    libuu_ln.rlib	   libuu_pwd.rlib	 libuu_tail.rlib        logname.d	      pwd.d				   tac.d
 date.d					 join	       libuu_df.d		    libuu_logname.d	   libuu_readlink.d	 libuu_tee.d	        ls		      qWOvHBU83NVJ07dxAbF8o1k6j6T4Ak0l0.   tail
 dd					 join.d	       libuu_df.rlib		    libuu_logname.rlib	   libuu_readlink.rlib	 libuu_tee.rlib	        ls.d		      readlink				   tail.d
relunsec@relunsec:~/software/coreutils/target/debug$ QUOTING_STYLE=$'\xFF' gnuls
gnuls: ignoring invalid value of environment variable QUOTING_STYLE: ‘\377’
 1o6iHq6D6FKsl7187mIs65fv8LQirsHfB   deps	   kill.d		        libuu_dircolors.rlib   libuu_ls.rlib	     libuu_realpath.rlib    libuu_test.rlib	  md5sum.d				  readlink.d    tee
 a				     df		   libstdbuf.d		        libuu_dir.d	       libuu_md5sum.d	     libuu_rm.d		    libuu_timeout.d	  mkdir					  realpath      tee.d
 a@				     df.d	   libstdbuf.so		        libuu_dirname.d        libuu_md5sum.rlib     libuu_rmdir.d	    libuu_timeout.rlib	  mkdir.d				  realpath.d    test
 a~				     dir	   libuu_arch.d		        libuu_dirname.rlib     libuu_mkdir.d	     libuu_rmdir.rlib	    libuu_touch.d	  mkfifo				  rm	        test.d
 arch				     dircolors	   libuu_arch.rlib	        libuu_dir.rlib	       libuu_mkdir.rlib      libuu_rm.rlib	    libuu_touch.rlib	  mkfifo.d				  rm.d	        timeout
 arch.d				     dircolors.d   libuu_b2sum.d	        libuu_du.d	       libuu_mkfifo.d	     libuu_runcon.d	    libuu_tr.d		  mknod					  rmdir         timeout.d
 a.txt				     dir.d	   libuu_b2sum.rlib	        libuu_du.rlib	       libuu_mkfifo.rlib     libuu_runcon.rlib	    libuu_tr.rlib	  mknod.d				  rmdir.d       touch
 b				     dirname	   libuu_base32.d	        libuu_echo.d	       libuu_mknod.d	     libuu_seq.d	    libuu_true.d	  mktemp				  runcon        touch.d
 b2sum				     dirname.d	   libuu_base32.rlib	        libuu_echo.rlib        libuu_mknod.rlib      libuu_seq.rlib	    libuu_true.rlib	  mktemp.d				  runcon.d      tr
 b2sum.d			     du		   libuu_base64.d	        libuu_env.d	       libuu_mktemp.d	     libuu_sha1sum.d	    libuu_truncate.d	  more					  seq	        tr.d
 base32				     du.d	   libuu_base64.rlib	        libuu_env.rlib	       libuu_mktemp.rlib     libuu_sha1sum.rlib     libuu_truncate.rlib   more.d				  seq.d         true
 base32.d			     eBr	   libuu_basename.d	        libuu_expand.d	       libuu_more.d	     libuu_sha224sum.d	    libuu_tsort.d	  mv					  sgYGgVDm78    true.d
 base64				     echo	   libuu_basename.rlib	        libuu_expand.rlib      libuu_more.rlib	     libuu_sha224sum.rlib   libuu_tsort.rlib	  mv.d					  sha1sum       truncate
 base64.d			     echo.d	   libuu_basenc.d	        libuu_expr.d	       libuu_mv.d	     libuu_sha256sum.d	    libuu_tty.d		  nice					  sha1sum.d     truncate.d
 basename			     env	   libuu_basenc.rlib	        libuu_expr.rlib        libuu_mv.rlib	     libuu_sha256sum.rlib   libuu_tty.rlib	  nice.d				  sha224sum     tsort
 basename.d			     env.d	   libuu_cat.d		        libuu_factor.d	       libuu_nice.d	     libuu_sha384sum.d	    libuu_uname.d	  nl					  sha224sum.d   tsort.d
 basenc				     examples	   libuu_cat.rlib	        libuu_factor.rlib      libuu_nice.rlib	     libuu_sha384sum.rlib   libuu_uname.rlib	  nl.d					  sha256sum     tty
 basenc.d			     expand	   libuu_chcon.d	        libuu_false.d	       libuu_nl.d	     libuu_sha512sum.d	    libuu_unexpand.d	  nohup					  sha256sum.d   tty.d
 build				     expand.d	   libuu_chcon.rlib	        libuu_false.rlib       libuu_nl.rlib	     libuu_sha512sum.rlib   libuu_unexpand.rlib   nohup.d				  sha384sum     uname
 c				     expr	   libuu_checksum_common.d      libuu_fmt.d	       libuu_nohup.d	     libuu_shred.d	    libuu_uniq.d	  nohup.out				  sha384sum.d   uname.d
 cat				     expr.d	   libuu_checksum_common.rlib   libuu_fmt.rlib	       libuu_nohup.rlib      libuu_shred.rlib	    libuu_uniq.rlib	  nproc					  sha512sum     unexpand
 cat.d				     factor	   libuu_chgrp.d	        libuu_fold.d	       libuu_nproc.d	     libuu_shuf.d	    libuu_unlink.d	  nproc.d				  sha512sum.d   unexpand.d
 chcon				     factor.d	   libuu_chgrp.rlib	        libuu_fold.rlib        libuu_nproc.rlib      libuu_shuf.rlib	    libuu_unlink.rlib	 'NQzhvkt8ZzkfWcWjY6ZdytxObS4EhkxZL.a\'   shred         uniq
 chcon.d			     false	   libuu_chmod.d	        libuu_groups.d	       libuu_numfmt.d	     libuu_sleep.d	    libuu_uptime.d	  numfmt				  shred.d       uniq.d
 chgrp				     false.d	   libuu_chmod.rlib	        libuu_groups.rlib      libuu_numfmt.rlib     libuu_sleep.rlib	    libuu_uptime.rlib	  numfmt.d				  shuf	        unlink
 chgrp.d			     fmt	   libuu_chown.d	        libuu_head.d	       libuu_od.d	     libuu_sort.d	    libuu_users.d	  od					  shuf.d        unlink.d
 chmod				     fmt.d	   libuu_chown.rlib	        libuu_head.rlib        libuu_od.rlib	     libuu_sort.rlib	    libuu_users.rlib	  od.d					  sleep         uptime
 chmod.d			     fold	   libuu_chroot.d	        libuu_hostid.d	       libuu_paste.d	     libuu_split.d	    libuu_vdir.d	  paste					  sleep.d       uptime.d
 chown				     fold.d	   libuu_chroot.rlib	        libuu_hostid.rlib      libuu_paste.rlib      libuu_split.rlib	    libuu_vdir.rlib	  paste.d				  sort	        users
 chown.d			     g		   libuu_cksum.d	        libuu_hostname.d       libuu_pathchk.d	     libuu_stat.d	    libuu_wc.d		  pathchk				  sort.d        users.d
 chroot				     groups	   libuu_cksum.rlib	        libuu_hostname.rlib    libuu_pathchk.rlib    libuu_stat.rlib	    libuu_wc.rlib	  pathchk.d				  split         vdir
 chroot.d			     groups.d	   libuu_comm.d		        libuu_id.d	       libuu_pinky.d	     libuu_stdbuf.d	    libuu_whoami.d	  pinky					  split.d       vdir.d
 cksum				     head	   libuu_comm.rlib	        libuu_id.rlib	       libuu_pinky.rlib      libuu_stdbuf.rlib	    libuu_whoami.rlib	  pinky.d				  stat	        wc
 cksum.d			     head.d	   libuu_cp.d		        libuu_install.d        libuu_pr.d	     libuu_stty.d	    libuu_who.d		  pipe					  stat.d        wc.d
 comm				     hostid	   libuu_cp.rlib	        libuu_install.rlib     libuu_printenv.d      libuu_stty.rlib	    libuu_who.rlib	  pr					  stdbuf        who
 comm.d				     hostid.d	   libuu_csplit.d	        libuu_join.d	       libuu_printenv.rlib   libuu_sum.d	    libuu_yes.d		  pr.d					  stdbuf.d      whoami
 cp				     hostname	   libuu_csplit.rlib	        libuu_join.rlib        libuu_printf.d	     libuu_sum.rlib	    libuu_yes.rlib	  printenv				  stty	        whoami.d
 cp.d				     hostname.d    libuu_cut.d		        libuu_kill.d	       libuu_printf.rlib     libuu_sync.d	    link		  printenv.d				  stty.d        who.d
 csplit				     id		   libuu_cut.rlib	        libuu_kill.rlib        libuu_pr.rlib	     libuu_sync.rlib	    link.d		  printf				  sum	        yes
 csplit.d			     id.d	   libuu_date.d		        libuu_link.d	       libuu_ptx.d	     libuu_tac.d	    ln			  printf.d				  sum.d         yes.d
 cut				     incremental   libuu_date.rlib	        libuu_link.rlib        libuu_ptx.rlib	     libuu_tac.rlib	    ln.d		  ptx					  sync	        z
 cut.d				     install	   libuu_dd.d		        libuu_ln.d	       libuu_pwd.d	     libuu_tail.d	    logname		  ptx.d					  sync.d
 date				     install.d	   libuu_dd.rlib	        libuu_ln.rlib	       libuu_pwd.rlib	     libuu_tail.rlib	    logname.d		  pwd					  tac
 date.d				     join	   libuu_df.d		        libuu_logname.d        libuu_readlink.d      libuu_tee.d	    ls			  pwd.d					  tac.d
 dd				     join.d	   libuu_df.rlib	        libuu_logname.rlib     libuu_readlink.rlib   libuu_tee.rlib	    ls.d		  qWOvHBU83NVJ07dxAbF8o1k6j6T4Ak0l0.	  tail
 dd.d				     kill	   libuu_dircolors.d	        libuu_ls.d	       libuu_realpath.d      libuu_test.d	    md5sum		  readlink				  tail.d
relunsec@relunsec:~/software/coreutils/target/debug$ 

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing the issue with the shown QUOTING_STYLE=$'\xFF' command and compare the output with gnuls. Trace how ls reads and validates QUOTING_STYLE, then locate the existing ls test entry point; done means invalid UTF-8 produces a warning while retaining the expected listing behavior.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
cli
Issue type
Bug
Difficulty
2/5
Estimated time
1-3 hours
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
68/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.