/* ok_to_open - true if it is OK to open the file under * the security model implied by secure_read_path * and safe_write_path */ int ok_to_open(const char *filename, const char *mode) { char fullname[STRMAX]; if (index(mode, 'r')) { /* asking for read permission */ if (secure_read_path) { /* filename must be in path */ find_full_path(filename, fullname); if (!in_tree(fullname, secure_read_path)) return FALSE; } } if (index(mode, 'w')) { /* asking for write permission */ if (safe_write_path) { /* filename must be in path */ find_full_path(filename, fullname); if (!in_tree(fullname, safe_write_path)) return FALSE; } } return TRUE; }
int do_binaries(t_info *info) { if (access(info->tab_cmd[0], F_OK | X_OK) == 0) { execute(info->tab_cmd[0], info->tab_cmd); return (RETURN_SUCCESS); } else return (find_full_path(info)); return (RETURN_ERROR); }