You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
204 lines
4.4 KiB
204 lines
4.4 KiB
/*++
|
|
|
|
Copyright (c) 1991 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
validc.h
|
|
|
|
Abstract:
|
|
|
|
Strings of valid/invalid characters for canonicalization.
|
|
|
|
--*/
|
|
|
|
#ifndef _VALIDC_H_
|
|
#define _VALIDC_H_
|
|
|
|
//
|
|
// Disallowed control characters (not including \0).
|
|
//
|
|
#define CTRL_CHARS_0 L"\001\002\003\004\005\006\007"
|
|
#define CTRL_CHARS_1 L"\010\011\012\013\014\015\016\017"
|
|
#define CTRL_CHARS_2 L"\020\021\022\023\024\025\026\027"
|
|
#define CTRL_CHARS_3 L"\030\031\032\033\034\035\036\037"
|
|
#define CTRL_CHARS_STR CTRL_CHARS_0 CTRL_CHARS_1 CTRL_CHARS_2 CTRL_CHARS_3
|
|
|
|
//
|
|
// Character subsets.
|
|
//
|
|
#define NON_COMPONENT_CHARS L"\\/:"
|
|
#define ILLEGAL_CHARS_STR L"\"<>|"
|
|
#define SPACE_STR L" "
|
|
#define PATH_SEPARATORS L"\\/"
|
|
|
|
//
|
|
// Combinations of the above.
|
|
//
|
|
#define ILLEGAL_CHARS CTRL_CHARS_STR ILLEGAL_CHARS_STR
|
|
#define ILLEGAL_NAME_CHARS_STR L"\"/\\:|<>?" CTRL_CHARS_STR
|
|
#define STANDARD_ILLEGAL_CHARS ILLEGAL_NAME_CHARS_STR L"*"
|
|
#define SERVER_ILLEGAL_CHARS STANDARD_ILLEGAL_CHARS SPACE_STR L"[]+;,"
|
|
#define USERNAME_ILLEGAL_CHARS L"\"/:|<>?" CTRL_CHARS_STR
|
|
|
|
//
|
|
// Characters which may not appear in a canonicalized FAT filename are:
|
|
// 0x00 - 0x1f " * + , / : ; < = > ? [ \ ] |
|
|
//
|
|
#define ILLEGAL_FAT_CHARS CTRL_CHARS_STR L"\"*+,/:;<=>?[\\]|"
|
|
|
|
//
|
|
// Characters which may not appear in a canonicalized HPFS filename are:
|
|
// 0x00 - 0x1f " * / : < > ? \ |
|
|
//
|
|
#define ILLEGAL_HPFS_CHARS CTRL_CHARS_STR L"\"*/:<>?\\|"
|
|
|
|
|
|
//
|
|
// Checks if the token contains all valid characters
|
|
//
|
|
#define IS_VALID_TOKEN(_Str, _StrLen) \
|
|
((BOOL) (wcscspn((_Str), STANDARD_ILLEGAL_CHARS) == (_StrLen)))
|
|
|
|
//
|
|
// Checks if the server name contains all valid characters for the server name
|
|
//
|
|
#define IS_VALID_SERVER_TOKEN(_Str, _StrLen) \
|
|
((BOOL) (wcscspn((_Str), SERVER_ILLEGAL_CHARS) == (_StrLen)))
|
|
|
|
//
|
|
// Checks if the token contains all valid characters
|
|
//
|
|
#define IS_VALID_USERNAME_TOKEN(_Str, _StrLen) \
|
|
((BOOL) (wcscspn((_Str), USERNAME_ILLEGAL_CHARS) == (_StrLen)))
|
|
|
|
//
|
|
// A remote entry for every unique shared resource name (\\server\share)
|
|
// of explicit connections.
|
|
//
|
|
typedef struct _UNC_NAME {
|
|
|
|
DWORD TotalUseCount;
|
|
|
|
DWORD UncNameLength;
|
|
|
|
LPWSTR UncName[1];
|
|
|
|
} UNC_NAME, *PUNC_NAME;
|
|
|
|
//
|
|
// A DAV use entry in the linked list of connections.
|
|
//
|
|
typedef struct _DAV_USE_ENTRY {
|
|
|
|
struct _DAV_USE_ENTRY *Next;
|
|
|
|
BOOL isPassport;
|
|
|
|
PUNC_NAME Remote;
|
|
|
|
LPWSTR Local;
|
|
|
|
DWORD LocalLength;
|
|
|
|
DWORD UseCount;
|
|
|
|
HANDLE DavCreateFileHandle;
|
|
|
|
LPWSTR TreeConnectStr;
|
|
|
|
LPWSTR AuthUserName;
|
|
|
|
DWORD AuthUserNameLength;
|
|
|
|
} DAV_USE_ENTRY, *PDAV_USE_ENTRY;
|
|
|
|
typedef struct _DAV_PER_USER_ENTRY {
|
|
|
|
//
|
|
// Pointer to linked list of user data.
|
|
//
|
|
PVOID List;
|
|
|
|
//
|
|
// Logon Id of user.
|
|
//
|
|
LUID LogonId;
|
|
|
|
} DAV_PER_USER_ENTRY, *PDAV_PER_USER_ENTRY;
|
|
|
|
typedef struct _DAV_USERS_OBJECT {
|
|
|
|
//
|
|
// Table of users.
|
|
//
|
|
PDAV_PER_USER_ENTRY Table;
|
|
|
|
//
|
|
// To serialize access to Table.
|
|
//
|
|
RTL_RESOURCE TableResource;
|
|
|
|
//
|
|
// Relocatable Table memory.
|
|
//
|
|
HANDLE TableMemory;
|
|
|
|
//
|
|
// Size of Table.
|
|
//
|
|
DWORD TableSize;
|
|
|
|
} DAV_USERS_OBJECT, *PDAV_USERS_OBJECT;
|
|
|
|
#define DAV_GROW_USER_COUNT 3
|
|
|
|
//
|
|
// The structure that contains a list of shares of a DAV server.
|
|
//
|
|
typedef struct _DAV_SERVER_SHARE_ENTRY {
|
|
|
|
//
|
|
// Name of the server.
|
|
//
|
|
PWCHAR ServerName;
|
|
|
|
//
|
|
// The list of structures containing the Dav shares.
|
|
//
|
|
PDAV_FILE_ATTRIBUTES DavShareList;
|
|
|
|
//
|
|
// Number of shares.
|
|
//
|
|
ULONG NumOfShares;
|
|
|
|
//
|
|
// The next entry.
|
|
//
|
|
LIST_ENTRY ServerShareEntry;
|
|
|
|
//
|
|
// The timer value used in the checking if we need to go to the server
|
|
// again to get the list of shares.
|
|
//
|
|
time_t TimeValueInSec;
|
|
|
|
//
|
|
// This should be the last field.
|
|
//
|
|
WCHAR StrBuffer[1];
|
|
|
|
} DAV_SERVER_SHARE_ENTRY, *PDAV_SERVER_SHARE_ENTRY;
|
|
|
|
#define SERVER_SHARE_TABLE_SIZE 512
|
|
|
|
extern LIST_ENTRY ServerShareTable[SERVER_SHARE_TABLE_SIZE];
|
|
|
|
//
|
|
// This critical section synchronizes access to the ServerHashTable.
|
|
//
|
|
extern CRITICAL_SECTION ServerShareTableLock;
|
|
|
|
#endif // _VALIDC_H_
|
|
|