Hello folks,
I've noticed that the zJournal string in the Pager struct isn't double-null
terminated, but goes through the same open file routines which seem to expect
the double null.
This has caused a crash condition in conjunction with the async module. The
crash happens at line 115866 of the 3.7.12 source:
SQLITE_API const char *sqlite3_uri_parameter(const char *zFilename, const char
*zParam){
if( zFilename==0 ) return 0;
zFilename += sqlite3Strlen30(zFilename) + 1;
while( zFilename[0] ){
int x = strcmp(zFilename, zParam); <========= crash here
zFilename += sqlite3Strlen30(zFilename) + 1;
if( x==0 ) return zFilename;
zFilename += sqlite3Strlen30(zFilename) + 1;
}
return 0;
}
I saw that Pager->zJournal is initialized as below in sqlite3PagerOpen:
memcpy(&pPager->zJournal[nPathname], "-journal\000", 8+1);
And it would seem to me it should be 9+1 since you have the internal \0 within
the string, as well as the terminator of the whole string.
Of course, I'm no sqlite guru, so this may be a case of "you're doing it
wrong", in which case, I do apologize in advance.
Thank you for reviewing this report.
Masashi Ito
_______________________________________________
sqlite-users mailing list
[email protected]
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users