Alvorlig bug udskyder (alligevel ikke) beta 2 af VS2005  

Addendum 2005-04-02: Nedenstående bug-beskrivelse er ikke længere relevant, idet Microsoft har foretaget et sikkerhedsreview, der har klarlagt, at fejlen kun havde effekt i går fredag 2005-04-01 (så den vil altså ikke længere kunne genskabes i den nedenfor beskrevne form). Ret beset gør det jo egentlig kun fejlen endnu mere obskur og foruroligende - det minder jo mest af alt om en ondsindet virus eller måske endda det, der er endnu værre.

Til alle de der i går gjorde os opmærksom på at linket til Microsofts Product Feedback Center er forkert (at det fejlagtigt peger på artiklen "Why did you choose angle bracket notation for generics?" og ikke på noget der har med den alvorlige clipboard-bug at gøre), kan vi kun sige at intet jo sker uden en grund, og måske har ikke bare VS2005, men også jeres webbrowser været påvirket af den alvorlige bug...

Eftersom fejlen, nu ikke længere ser ud til at udgøre nogen egentlig sikkerhedsrisiko, forlyder det, at der fra nu af nu kun vil ske planmæssige forsinkelser af beta 2 af Visual Studio 2005.


Som man måske kan huske, var der en bug, der gav problemer ved brug af Clipboardet i VS 2005 Beta 1. Et af symptomerne var, at når man pastede floating-point literals ind, så foregik der en form for konvertering af værdien: Havde man eksempelvis 42.17 i Clipboardet, blev det til 42.169999999999 når man pastede det ind i koden. Denne bug har været fixet siden December-droppet.

Imidlertid har Microsoft i forbindelse med Beta 2 udgaven opdaget, at der ligger større, grundlæggende problemer bag end som så. Da de gik i gang med implementere kommandoen for at cykle igennem Clipboard-indholdet (ligesom det er tilfældet i VS 2003 med Ctrl+Shift+V) opdagede de ved et rent tilfælde, at koden i visse tilfælde bliver eksekveret som kommando (!). Hermed følger en fremgangsmåde til at genskabe denne bug.
(ADVARSEL!! Det anbefales, at du kører eksemplet på en virtuel PC, så du ikke mister data.)

Hvis du i din kode har erklæret en variabel som C (store C) som String, vil du kunne bruge denne String-instans til metode-kaldet System.String.Format:

Dim C As String = "{0} C:" MsgBox(System.String.Format(C, "Format"))

Dette er i sig selv ikke noget problem. MEN hvis du har din Visual Studio Command Prompt åben, og du har et C-drev (og hvem har ikke det?) sker der noget ganske utilsigtet, hvis du har lagt ”System.String.Format(C, ”Format”)” i Clipboardet og forsøger at paste det ind et sted i koden med Ctrl+Shift+V. Strengen opfattes som DOS-kommando, og C-drevet bliver formateret!!

Selvom det er et meget specialiseret tilfælde, denne bug optræder i, vides det endnu ikke om det får konsekvenser for den endelige release af Visual Studio 2005, men det har allerede forsinket Beta 2. Det viser jo, at man kan afvikle kode via Clipboardet, og man må forberede sig på, at det kan være årsag til en markant udskydelse. Kensa Duben fra Microsoft udtaler, at man desuden vil kigge nærmere på, om denne bug kan udnyttes i forbindelse med andre applikationer til at få afviklet ondsindet kode.

Det er muligt at følge status på denne bug på: http://lab.msdn.microsoft.com/productfeedback/viewfeedback.aspx?feedbackid=087e5a94-e958-4699-9e51-0ccfc71cd015