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.

Assessment

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

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.

Description

U - ls

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$ 
Dominant language
Rust
Stars
24.1k
Forks
2k
Avg merge
1d 4h
Merged PRs (30d)
371

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.

More from uutils/coreutils

All issues in uutils/coreutils

Similar issues

More Rust issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.