Fossil SCM
Improved detection of invalid home directories and better error messages when invalid home directories are detected. Ticket [c3971eac71a1bd0]
Commit
822133a7638132cb7c4e2aad3055a67959525d96
Parent
d02115bbf0a001d…
1 file changed
+12
-4
M
src/db.c
+12
-4
| --- src/db.c | ||
| +++ src/db.c | ||
| @@ -656,18 +656,26 @@ | ||
| 656 | 656 | if( zHome==0 ){ |
| 657 | 657 | zHome = getenv("HOMEPATH"); |
| 658 | 658 | } |
| 659 | 659 | } |
| 660 | 660 | if( zHome==0 ){ |
| 661 | - db_err("cannot locate home directory - " | |
| 662 | - "please set the HOMEPATH environment variable"); | |
| 661 | + fossil_fatal("cannot locate home directory - " | |
| 662 | + "please set the HOMEPATH environment variable"); | |
| 663 | 663 | } |
| 664 | 664 | #else |
| 665 | 665 | zHome = getenv("HOME"); |
| 666 | 666 | if( zHome==0 ){ |
| 667 | - db_err("cannot locate home directory - " | |
| 668 | - "please set the HOME environment variable"); | |
| 667 | + fossil_fatal("cannot locate home directory - " | |
| 668 | + "please set the HOME environment variable"); | |
| 669 | + } | |
| 670 | +#endif | |
| 671 | + if( file_isdir(zHome)!=1 ){ | |
| 672 | + fossil_fatal("invalid home directory: %s", zHome); | |
| 673 | + } | |
| 674 | +#ifndef __MINGW32__ | |
| 675 | + if( access(zHome, W_OK) ){ | |
| 676 | + fossil_fatal("home directory %s must be writeable", zHome); | |
| 669 | 677 | } |
| 670 | 678 | #endif |
| 671 | 679 | g.zHome = mprintf("%/", zHome); |
| 672 | 680 | #ifdef __MINGW32__ |
| 673 | 681 | /* . filenames give some window systems problems and many apps problems */ |
| 674 | 682 |
| --- src/db.c | |
| +++ src/db.c | |
| @@ -656,18 +656,26 @@ | |
| 656 | if( zHome==0 ){ |
| 657 | zHome = getenv("HOMEPATH"); |
| 658 | } |
| 659 | } |
| 660 | if( zHome==0 ){ |
| 661 | db_err("cannot locate home directory - " |
| 662 | "please set the HOMEPATH environment variable"); |
| 663 | } |
| 664 | #else |
| 665 | zHome = getenv("HOME"); |
| 666 | if( zHome==0 ){ |
| 667 | db_err("cannot locate home directory - " |
| 668 | "please set the HOME environment variable"); |
| 669 | } |
| 670 | #endif |
| 671 | g.zHome = mprintf("%/", zHome); |
| 672 | #ifdef __MINGW32__ |
| 673 | /* . filenames give some window systems problems and many apps problems */ |
| 674 |
| --- src/db.c | |
| +++ src/db.c | |
| @@ -656,18 +656,26 @@ | |
| 656 | if( zHome==0 ){ |
| 657 | zHome = getenv("HOMEPATH"); |
| 658 | } |
| 659 | } |
| 660 | if( zHome==0 ){ |
| 661 | fossil_fatal("cannot locate home directory - " |
| 662 | "please set the HOMEPATH environment variable"); |
| 663 | } |
| 664 | #else |
| 665 | zHome = getenv("HOME"); |
| 666 | if( zHome==0 ){ |
| 667 | fossil_fatal("cannot locate home directory - " |
| 668 | "please set the HOME environment variable"); |
| 669 | } |
| 670 | #endif |
| 671 | if( file_isdir(zHome)!=1 ){ |
| 672 | fossil_fatal("invalid home directory: %s", zHome); |
| 673 | } |
| 674 | #ifndef __MINGW32__ |
| 675 | if( access(zHome, W_OK) ){ |
| 676 | fossil_fatal("home directory %s must be writeable", zHome); |
| 677 | } |
| 678 | #endif |
| 679 | g.zHome = mprintf("%/", zHome); |
| 680 | #ifdef __MINGW32__ |
| 681 | /* . filenames give some window systems problems and many apps problems */ |
| 682 |