/ Check-in [ca6c1e3f]
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Change the windows tempfile name generator so that it uses 119 bits of randomness and does not bother to check to see if the file already exists. Ticket #2608. (Unable to test from this machine, but the changes are simple and isolated. Hope it works.) (CVS 4357)
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: ca6c1e3f44d8b9d9b76a0efe53ea6a6ad5e14d57
User & Date: drh 2007-09-01 02:13:11
Context
2007-09-01
05:57
Call sqlite3OsDlError to obtain error information after DlOpen or DlSym fail. (CVS 4358) check-in: 3d74256c user: danielk1977 tags: trunk
02:13
Change the windows tempfile name generator so that it uses 119 bits of randomness and does not bother to check to see if the file already exists. Ticket #2608. (Unable to test from this machine, but the changes are simple and isolated. Hope it works.) (CVS 4357) check-in: ca6c1e3f user: drh tags: trunk
2007-08-31
18:50
Get make doc working again. (CVS 4356) check-in: 8f73ebc6 user: drh tags: trunk
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to src/os_win.c.

1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
      free(zUtf8);
    }else{
      return SQLITE_NOMEM;
    }
  }
  for(i=strlen(zTempPath); i>0 && zTempPath[i-1]=='\\'; i--){}
  zTempPath[i] = 0;
  for(;;){
    sqlite3_snprintf(pVfs->mxPathname-30, zBuf,
                     "%s\\"SQLITE_TEMP_FILE_PREFIX, zTempPath);
    j = strlen(zBuf);
    sqlite3Randomness(15, &zBuf[j]);
    for(i=0; i<15; i++, j++){
      zBuf[j] = (char)zChars[ ((unsigned char)zBuf[j])%(sizeof(zChars)-1) ];
    }
    zBuf[j] = 0;
    if( !sqlite3OsAccess(pVfs, zBuf, SQLITE_ACCESS_EXISTS) ) break;
  }
  OSTRACE2("TEMP FILENAME: %s\n", zBuf);
  return SQLITE_OK; 
}

/*
** Turn a relative pathname into a full pathname.  Write the full
** pathname into zOut[].  zOut[] will be at least pVfs->mxPathname







<
|
|
|
|
|
|
|
|
<
<







1281
1282
1283
1284
1285
1286
1287

1288
1289
1290
1291
1292
1293
1294
1295


1296
1297
1298
1299
1300
1301
1302
      free(zUtf8);
    }else{
      return SQLITE_NOMEM;
    }
  }
  for(i=strlen(zTempPath); i>0 && zTempPath[i-1]=='\\'; i--){}
  zTempPath[i] = 0;

  sqlite3_snprintf(pVfs->mxPathname-30, zBuf,
                   "%s\\"SQLITE_TEMP_FILE_PREFIX, zTempPath);
  j = strlen(zBuf);
  sqlite3Randomness(20, &zBuf[j]);
  for(i=0; i<20; i++, j++){
    zBuf[j] = (char)zChars[ ((unsigned char)zBuf[j])%(sizeof(zChars)-1) ];
  }
  zBuf[j] = 0;


  OSTRACE2("TEMP FILENAME: %s\n", zBuf);
  return SQLITE_OK; 
}

/*
** Turn a relative pathname into a full pathname.  Write the full
** pathname into zOut[].  zOut[] will be at least pVfs->mxPathname