auto merge of #8133 : blake2-ppc/rust/overlong-utf8, r=cmr
auto merge of #8133 : blake2-ppc/rust/overlong-utf8, r=cmr

Fix is_utf8 and UTF-8 char width functions to deny non-canonical 'overlong encodings' in UTF-8.

We address the function is_utf8 to make it more strict and correct, but no changes are made to the handling of invalid UTF-8.

Fixes issue #3787

philyoon/rust,P1start/rust,pczarn/rust,P1start/rust,quornian/rust,defuz/rust,ebfull/rust,stepancheg/rust-ide-rust,GBGamer/rust,nham/rust,jbclements/rust,gifnksm/rust,aneeshusa/rust,reem/rust,untitaker/rust,jroesch/rust,jroesch/rust,0x73/rust,nham/rust,graydon/rust,hauleth/rust,robertg/rust,stepancheg/rust-ide-rust,krzysz00/rust,mihneadb/rust,avdi/rust,mihneadb/rust,gifnksm/rust,gifnksm/rust,aneeshusa/rust,rohitjoshi/rust,kimroen/rust,fabricedesre/rust,mahkoh/rust,zubron/rust,XMPPwocky/rust,barosl/rust,michaelballantyne/rust-gpu,zaeleus/rust,dinfuehr/rust,SiegeLord/rust,reem/rust,ejjeong/rust,l0kod/rust,GBGamer/rust,erickt/rust,ruud-v-a/rust,jbclements/rust,l0kod/rust,pshc/rust,emk/rust,fabricedesre/rust,dinfuehr/rust,SiegeLord/rust,pczarn/rust,aneeshusa/rust,pczarn/rust,victorvde/rust,ejjeong/rust,carols10cents/rust,ktossell/rust,robertg/rust,jashank/rust,mdinger/rust,erickt/rust,jashank/rust,erickt/rust,zaeleus/rust,zubron/rust,KokaKiwi/rust,richo/rust,untitaker/rust,shepmaster/rand,miniupnp/rust,mahkoh/rust,LeoTestard/rust,aepsil0n/rust,fabricedesre/rust,mitsuhiko/rust,quornian/rust,michaelballantyne/rust-gpu,servo/rust,avdi/rust,aepsil0n/rust,richo/rust,cllns/rust,vhbit/rust,pshc/rust,ruud-v-a/rust,ebfull/rust,Ryman/rust,kwantam/rust,zubron/rust,dinfuehr/rust,jbclements/rust,zaeleus/rust,emk/rust,sae-bom/rust,defuz/rust,AerialX/rust,quornian/rust,Ryman/rust,quornian/rust,erickt/rust,rohitjoshi/rust,TheNeikos/rust,stepancheg/rust-ide-rust,seanrivera/rust,mdinger/rust,P1start/rust,KokaKiwi/rust,vhbit/rust,krzysz00/rust,mdinger/rust,carols10cents/rust,philyoon/rust,hauleth/rust,quornian/rust,ebfull/rust,ejjeong/rust,zachwick/rust,bluss/rand,ktossell/rust,GrahamDennis/rand,servo/rust,seanrivera/rust,SiegeLord/rust,defuz/rust,ruud-v-a/rust,pshc/rust,0x73/rust,miniupnp/rust,gifnksm/rust,aturon/rust,aepsil0n/rust,mahkoh/rust,servo/rust,victorvde/rust,rohitjoshi/rust,XMPPwocky/rust,pczarn/rust,ruud-v-a/rust,Ryman/rust,P1start/rust,robertg/rust,philyoon/rust,barosl/rust,TheNeikos/rust,ebfull/rust,nham/rust,pelmers/rust,zubron/rust,jroesch/rust,jbclements/rust,servo/rust,mvdnes/rust,SiegeLord/rust,kwantam/rust,aidancully/rust,kimroen/rust,TheNeikos/rust,nwin/rust,mvdnes/rust,pythonesque/rust,barosl/rust,bombless/rust,pythonesque/rust,aneeshusa/rust,avdi/rust,pshc/rust,mitsuhiko/rust,rohitjoshi/rust,GBGamer/rust,dwillmer/rust,GBGamer/rust,ktossell/rust,cllns/rust,pelmers/rust,pythonesque/rust,omasanori/rust,philyoon/rust,jroesch/rust,zachwick/rust,mahkoh/rust,TheNeikos/rust,l0kod/rust,rohitjoshi/rust,SiegeLord/rust,mihneadb/rust,victorvde/rust,vhbit/rust,ejjeong/rust,nham/rust,nwin/rust,erickt/rust,reem/rust,dwillmer/rust,0x73/rust,zubron/rust,kimroen/rust,pshc/rust,GBGamer/rust,jroesch/rust,robertg/rust,KokaKiwi/rust,l0kod/rust,kwantam/rust,KokaKiwi/rust,dinfuehr/rust,rprichard/rust,aturon/rust,jroesch/rust,barosl/rust,GBGamer/rust,jashank/rust,richo/rust,aturon/rust,AerialX/rust-rt-minimal,rprichard/rust,michaelballantyne/rust-gpu,omasanori/rust,servo/rust,jashank/rust,Ryman/rust,dwillmer/rust,aneeshusa/rust,omasanori/rust,andars/rust,Ryman/rust,bombless/rust,quornian/rust,zachwick/rust,omasanori/rust,defuz/rust,servo/rust,andars/rust,AerialX/rust-rt-minimal,0x73/rust,aidancully/rust,cllns/rust,emk/rust,mihneadb/rust,ruud-v-a/rust,omasanori/rust,XMPPwocky/rust,miniupnp/rust,miniupnp/rust,mitsuhiko/rust,LeoTestard/rust,aidancully/rust,huonw/rand,bombless/rust,0x73/rust,vhbit/rust,pczarn/rust,carols10cents/rust,mdinger/rust,robertg/rust,krzysz00/rust,nwin/rust,ruud-v-a/rust,rprichard/rust,LeoTestard/rust,barosl/rust,kwantam/rust,jroesch/rust,mitsuhiko/rust,bhickey/rand,jbclements/rust,mitsuhiko/rust,pythonesque/rust,P1start/rust,zaeleus/rust,zubron/rust,nwin/rust,seanrivera/rust,mihneadb/rust,pshc/rust,mvdnes/rust,pelmers/rust,AerialX/rust,hauleth/rust,avdi/rust,reem/rust,pelmers/rust,LeoTestard/rust,pshc/rust,hauleth/rust,mitsuhiko/rust,andars/rust,victorvde/rust,l0kod/rust,ktossell/rust,carols10cents/rust,jbclements/rust,ktossell/rust,pelmers/rust,XMPPwocky/rust,victorvde/rust,cllns/rust,andars/rust,hauleth/rust,philyoon/rust,krzysz00/rust,carols10cents/rust,dwillmer/rust,untitaker/rust,rprichard/rust,erickt/rust,zachwick/rust,graydon/rust,sae-bom/rust,stepancheg/rust-ide-rust,rprichard/rust,nham/rust,sae-bom/rust,nwin/rust,zaeleus/rust,avdi/rust,servo/rust,mdinger/rust,ebfull/rust,TheNeikos/rust,jroesch/rust,zubron/rust,aneeshusa/rust,jashank/rust,jbclements/rust,aepsil0n/rust,GBGamer/rust,fabricedesre/rust,mahkoh/rust,stepancheg/rust-ide-rust,graydon/rust,miniupnp/rust,nwin/rust,AerialX/rust,fabricedesre/rust,emk/rust,miniupnp/rust,jbclements/rust,seanrivera/rust,avdi/rust,victorvde/rust,LeoTestard/rust,barosl/rust,michaelballantyne/rust-gpu,dinfuehr/rust,vhbit/rust,emk/rust,LeoTestard/rust,ejjeong/rust,nwin/rust,AerialX/rust,stepancheg/rust-ide-rust,miniupnp/rust,jbclements/rust,richo/rust,mahkoh/rust,nham/rust,aepsil0n/rust,ejjeong/rust,rohitjoshi/rust,kimroen/rust,carols10cents/rust,robertg/rust,gifnksm/rust,AerialX/rust-rt-minimal,nham/rust,TheNeikos/rust,fabricedesre/rust,cllns/rust,zubron/rust,untitaker/rust,AerialX/rust,aidancully/rust,untitaker/rust,krzysz00/rust,nwin/rust,vhbit/rust,bombless/rust,sae-bom/rust,pelmers/rust,ebfull/rand,XMPPwocky/rust,seanrivera/rust,dwillmer/rust,seanrivera/rust,XMPPwocky/rust,AerialX/rust,mvdnes/rust,l0kod/rust,bombless/rust-docs-chinese,cllns/rust,waynenilsen/rand,emk/rust,omasanori/rust,aidancully/rust,kwantam/rust,sae-bom/rust,graydon/rust,michaelballantyne/rust-gpu,aturon/rust,zachwick/rust,AerialX/rust-rt-minimal,aepsil0n/rust,graydon/rust,michaelballantyne/rust-gpu,reem/rust,mdinger/rust,andars/rust,SiegeLord/rust,philyoon/rust,achanda/rand,jashank/rust,kimroen/rust,mitsuhiko/rust,pythonesque/rust,SiegeLord/rust,richo/rust,bombless/rust,sae-bom/rust,AerialX/rust-rt-minimal,gifnksm/rust,P1start/rust,miniupnp/rust,graydon/rust,defuz/rust,richo/rust,pczarn/rust,ktossell/rust,KokaKiwi/rust,kimroen/rust,krzysz00/rust,kimroen/rust,stepancheg/rust-ide-rust,pczarn/rust,zachwick/rust,rprichard/rust,emk/rust,zaeleus/rust,pshc/rust,aturon/rust,ktossell/rust,ebfull/rust,l0kod/rust,retep998/rand,aidancully/rust,dwillmer/rust,LeoTestard/rust,AerialX/rust-rt-minimal,reem/rust,0x73/rust,andars/rust,jashank/rust,quornian/rust,erickt/rust,mvdnes/rust,jashank/rust,mihneadb/rust,kwantam/rust,Ryman/rust,vhbit/rust,hauleth/rust,untitaker/rust,defuz/rust,vhbit/rust,barosl/rust,mvdnes/rust,michaelballantyne/rust-gpu,l0kod/rust,Ryman/rust,pythonesque/rust,dinfuehr/rust,fabricedesre/rust,aturon/rust,P1start/rust,dwillmer/rust,dwillmer/rust,arthurprs/rand,KokaKiwi/rust,aturon/rust,GBGamer/rust,bombless/rust,pythonesque/rust,0x73/rust