SQLite 3.51.3 med fix för möjligt databasöverskridande i WAL-lÀget.

SQLite 3.51.3 med fix för möjligt databasöverskridande i WAL-lÀget.

Den 13 mars genomfördes en korrigerande version 3.51.3 av den kompakt inbÀddade databashanteraren. SQLite. Projektkoden Àr skriven i C och distribueras som offentlig egendom (public domain).

PÄ grund av bakÄtkompatibilitetsproblem relaterade till vissa nya funktioner drogs versionen 3.52.0 (som slÀpptes den 6 mars) tillbaka.

Ändringslistan för version 3.51.3:

  • Den 3 mars upptĂ€ckte och Ă„tgĂ€rdade en av SQLite:s utvecklare (Dan) en bugg som i sĂ€llsynta fall kunde leda till att databasen blev korrupt, kallad «WAL-reset bug»:
    • Denna bugg uppstĂ„r endast i databaser som körs i WAL-lĂ€ge, om tvĂ„ eller fler anslutningar öppnas till samma fil i olika trĂ„dar eller processer, och om dessa tvĂ„ anslutningar försöker skriva eller skapa en kontrollpunkt samtidigt.
    • Buggen Ă€r relaterad till datakonflikter under strikta tidsbegrĂ€nsningar. Under normala driftsförhĂ„llanden uppstĂ„r den mycket sĂ€llan. Utvecklarna kunde aldrig Ă„terskapa buggen under naturliga förhĂ„llanden, och de var tvungna att lĂ€gga till sĂ€rskild testlogik i SQLite som avsiktligt skapar förhĂ„llanden för att Ă„terskapa buggen, för att sĂ€kerstĂ€lla att problemet var löst.
    • Buggen uppstĂ„r nĂ€r:
      1. En anslutning genomför en kontrollpunkt. Denna första kontrollpunkt mÄste slutföras. Med andra ord, under kontrollpunkten mÄste hela innehÄllet i WAL-filen framgÄngsrikt kopieras tillbaka till databasen och WAL-filen ÄterstÀllas sÄ att den kan ÄterstÀllas.
      2. SÄ snart den första kontrollpunkten Àr klar, startar en andra.
      3. Medan den andra kontrollpunkten frÄn steg 2 körs, registrerar en annan databasanslutning en transaktion som ÄterstÀller WAL-filen och skriver nytt innehÄll i början av WAL-filen.
      4. PÄ grund av datakonflikten beaktar inte den andra kontrollpunkten frÄn steg 2 att WAL-filen har ÄterstÀllts till följd av transaktionen i steg 3. Den andra kontrollpunkten sÀtter ett felaktigt vÀrde för ett av fÀlten i WAL-indexhuvudet. Detta fÀlt anger att en del av WAL-filen redan har registrerats i kontrollpunkten, Àven om sÄ inte Àr fallet.
      5. Registrering av ytterligare transaktioner leder till en ökning av antalet sidor i WAL-filen, vilket överstiger antalet sidor som fanns vid den första kontrollpunkten frÄn steg 1.
      6. Senare, nÀr den tredje kontrollpunkten intrÀffar, hoppar den över hela eller delar av transaktionen som registrerades i steg 3. DÀrmed nÄr delar av transaktionen frÄn steg 3 aldrig databasfilen, vilket resulterar i att databasfilen skadas.
    • Felet finns troligen i alla versioner av SQLite, frĂ„n 3.7.0 (21.07.2010) till 3.51.2. Korrigeringar har ocksĂ„ slĂ€ppts för vissa tidigare versioner: 3.44.6 och 3.50.7.
  • Andra mindre korrigeringar.

KĂ€lla: linux.org.ru

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster