Index: sqlite3/src/os_unix.c
==================================================================
--- sqlite3/src/os_unix.c
+++ sqlite3/src/os_unix.c
@@ -5423,10 +5423,10 @@ static const char *unixTempFileDir(void)
     if( zDir==0 ) continue;
     if( osStat(zDir, &buf) ) continue;
     if( !S_ISDIR(buf.st_mode) ) continue;
-    if( osAccess(zDir, 07) ) continue;
-    break;
+    if( osAccess(zDir, 03) ) continue;
+    return zDir;
   }
-  return zDir;
+  return 0;
 }
 
 /*
@@ -5446,10 +5446,11 @@ static int unixGetTempname(int nBuf, cha
   ** using the io-error infrastructure to test that SQLite handles this
   ** function failing. 
   */
+  zBuf[0] = 0;
   SimulateIOError( return SQLITE_IOERR );
 
   zDir = unixTempFileDir();
-  if( zDir==0 ) zDir = ".";
+  if( zDir==0 ) return SQLITE_IOERR_GETTEMPPATH;
 
   /* Check that the output buffer is large enough for the temporary file 
   ** name. If it is not, return SQLITE_ERROR.
