* Do no add inaccessible directories to the database. (Thanks Ivan Mironov)
This commit is contained in:
@ -443,6 +443,12 @@ inotify_insert_directory(int fd, char *name, const char * path)
|
|||||||
struct media_dir_s * media_path;
|
struct media_dir_s * media_path;
|
||||||
struct stat st;
|
struct stat st;
|
||||||
|
|
||||||
|
if( access(path, R_OK|X_OK) != 0 )
|
||||||
|
{
|
||||||
|
DPRINTF(E_WARN, L_INOTIFY, "Could not access %s [%s]\n", path, strerror(errno));
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
parent_buf = dirname(strdup(path));
|
parent_buf = dirname(strdup(path));
|
||||||
sql = sqlite3_mprintf("SELECT OBJECT_ID from OBJECTS o left join DETAILS d on (d.ID = o.DETAIL_ID)"
|
sql = sqlite3_mprintf("SELECT OBJECT_ID from OBJECTS o left join DETAILS d on (d.ID = o.DETAIL_ID)"
|
||||||
" where d.PATH = '%q' and REF_ID is NULL", parent_buf);
|
" where d.PATH = '%q' and REF_ID is NULL", parent_buf);
|
||||||
|
@ -773,7 +773,7 @@ ScanDirectory(const char * dir, const char * parent, enum media_types dir_type)
|
|||||||
{
|
{
|
||||||
type = resolve_unknown_type(full_path, dir_type);
|
type = resolve_unknown_type(full_path, dir_type);
|
||||||
}
|
}
|
||||||
if( type == TYPE_DIR )
|
if( (type == TYPE_DIR) && (access(full_path, R_OK|X_OK) == 0) )
|
||||||
{
|
{
|
||||||
insert_directory(name?name:namelist[i]->d_name, full_path, BROWSEDIR_ID, (parent ? parent:""), i+startID);
|
insert_directory(name?name:namelist[i]->d_name, full_path, BROWSEDIR_ID, (parent ? parent:""), i+startID);
|
||||||
sprintf(parent_id, "%s$%X", (parent ? parent:""), i+startID);
|
sprintf(parent_id, "%s$%X", (parent ? parent:""), i+startID);
|
||||||
|
Reference in New Issue
Block a user