SQLite Forum

Bug in sqlite3PagerSharedLock?
Login
Hi,

Not entirely sure about this, but it looks to me like the following snippet (from sqlite3PagerSharedLock in pager.c [0]) has a bug:

```
      char dbFileVers[sizeof(pPager->dbFileVers)];

      IOTRACE(("CKVERS %p %d\n", pPager, sizeof(dbFileVers)));
      rc = sqlite3OsRead(pPager->fd, &dbFileVers, sizeof(dbFileVers), 24);
      if( rc!=SQLITE_OK ){
        if( rc!=SQLITE_IOERR_SHORT_READ ){
          goto failed;
        }
        memset(dbFileVers, 0, sizeof(dbFileVers));
      }
```

Shouldn't it be

```
      char dbFileVers[sizeof(pPager->dbFileVers)];

      IOTRACE(("CKVERS %p %d\n", pPager, sizeof(dbFileVers)));
      rc = sqlite3OsRead(pPager->fd, dbFileVers, sizeof(dbFileVers), 24);
      if( rc!=SQLITE_OK ){
        if( rc!=SQLITE_IOERR_SHORT_READ ){
          goto failed;
        }
        memset(dbFileVers, 0, sizeof(dbFileVers));
      }
```

instead? i.e., replace `&dbFileVers` with `dbFileVers` in the `sqlite3OsRead` call.

Cheers,
Hugo

[0] https://github.com/sqlite/sqlite/blob/master/src/pager.c#L5342