mirror of
https://github.com/curl/curl.git
synced 2026-08-24 19:53:46 +03:00
parent
1753de9d7a
commit
0417d323c9
52 changed files with 490 additions and 543 deletions
|
|
@ -63,14 +63,13 @@
|
|||
/* only used by msdosify() */
|
||||
static SANITIZEcode truncate_dryrun(const char *path,
|
||||
const size_t truncate_pos);
|
||||
static SANITIZEcode msdosify(char **const sanitized, const char *file_name,
|
||||
static SANITIZEcode msdosify(char ** const sanitized, const char *file_name,
|
||||
int flags);
|
||||
#endif
|
||||
static SANITIZEcode rename_if_reserved_dos(char **const sanitized,
|
||||
static SANITIZEcode rename_if_reserved_dos(char ** const sanitized,
|
||||
const char *file_name,
|
||||
int flags);
|
||||
|
||||
|
||||
/*
|
||||
Sanitize a file or path name.
|
||||
|
||||
|
|
@ -96,7 +95,7 @@ is in a UNC prefixed path.
|
|||
Success: (SANITIZE_ERR_OK) *sanitized points to a sanitized copy of file_name.
|
||||
Failure: (!= SANITIZE_ERR_OK) *sanitized is NULL.
|
||||
*/
|
||||
SANITIZEcode sanitize_file_name(char **const sanitized, const char *file_name,
|
||||
SANITIZEcode sanitize_file_name(char ** const sanitized, const char *file_name,
|
||||
int flags)
|
||||
{
|
||||
char *p, *target;
|
||||
|
|
@ -116,16 +115,16 @@ SANITIZEcode sanitize_file_name(char **const sanitized, const char *file_name,
|
|||
#ifndef MSDOS
|
||||
if(file_name[0] == '\\' && file_name[1] == '\\')
|
||||
/* UNC prefixed path \\ (eg \\?\C:\foo) */
|
||||
max_sanitized_len = 32767-1;
|
||||
max_sanitized_len = 32767 - 1;
|
||||
else
|
||||
#endif
|
||||
max_sanitized_len = PATH_MAX-1;
|
||||
max_sanitized_len = PATH_MAX - 1;
|
||||
}
|
||||
else
|
||||
/* The maximum length of a filename. FILENAME_MAX is often the same as
|
||||
PATH_MAX, in other words it is 260 and does not discount the path
|
||||
information therefore we should not use it. */
|
||||
max_sanitized_len = (PATH_MAX-1 > 255) ? 255 : PATH_MAX-1;
|
||||
max_sanitized_len = (PATH_MAX - 1 > 255) ? 255 : PATH_MAX - 1;
|
||||
|
||||
len = strlen(file_name);
|
||||
if(len > max_sanitized_len)
|
||||
|
|
@ -287,17 +286,18 @@ sanitize_file_name.
|
|||
Success: (SANITIZE_ERR_OK) *sanitized points to a sanitized copy of file_name.
|
||||
Failure: (!= SANITIZE_ERR_OK) *sanitized is NULL.
|
||||
*/
|
||||
static SANITIZEcode msdosify(char **const sanitized, const char *file_name,
|
||||
static SANITIZEcode msdosify(char ** const sanitized, const char *file_name,
|
||||
int flags)
|
||||
{
|
||||
char dos_name[PATH_MAX];
|
||||
static const char illegal_chars_dos[] = ".+, ;=[]" /* illegal in DOS */
|
||||
static const char illegal_chars_dos[] =
|
||||
".+, ;=[]" /* illegal in DOS */
|
||||
"|<>/\\\":?*"; /* illegal in DOS & W95 */
|
||||
static const char *illegal_chars_w95 = &illegal_chars_dos[8];
|
||||
int idx, dot_idx;
|
||||
const char *s = file_name;
|
||||
char *d = dos_name;
|
||||
const char *const dlimit = dos_name + sizeof(dos_name) - 1;
|
||||
const char * const dlimit = dos_name + sizeof(dos_name) - 1;
|
||||
const char *illegal_aliens = illegal_chars_dos;
|
||||
size_t len = sizeof(illegal_chars_dos) - 1;
|
||||
|
||||
|
|
@ -309,7 +309,7 @@ static SANITIZEcode msdosify(char **const sanitized, const char *file_name,
|
|||
if(!file_name)
|
||||
return SANITIZE_ERR_BAD_ARGUMENT;
|
||||
|
||||
if(strlen(file_name) > PATH_MAX-1)
|
||||
if(strlen(file_name) > PATH_MAX - 1)
|
||||
return SANITIZE_ERR_INVALID_PATH;
|
||||
|
||||
/* Support for Windows 9X VFAT systems, when available. */
|
||||
|
|
@ -322,7 +322,8 @@ static SANITIZEcode msdosify(char **const sanitized, const char *file_name,
|
|||
if(s[0] >= 'A' && s[0] <= 'z' && s[1] == ':') {
|
||||
*d++ = *s++;
|
||||
*d = ((flags & SANITIZE_ALLOW_PATH)) ? ':' : '_';
|
||||
++d; ++s;
|
||||
++d;
|
||||
++s;
|
||||
}
|
||||
|
||||
for(idx = 0, dot_idx = -1; *s && d < dlimit; s++, d++) {
|
||||
|
|
@ -373,7 +374,7 @@ static SANITIZEcode msdosify(char **const sanitized, const char *file_name,
|
|||
*d++ = 'x';
|
||||
if(d == dlimit)
|
||||
break;
|
||||
*d = 'x';
|
||||
*d = 'x';
|
||||
}
|
||||
else {
|
||||
/* libg++ etc. */
|
||||
|
|
@ -381,7 +382,7 @@ static SANITIZEcode msdosify(char **const sanitized, const char *file_name,
|
|||
*d++ = 'x';
|
||||
if(d == dlimit)
|
||||
break;
|
||||
*d = 'x';
|
||||
*d = 'x';
|
||||
}
|
||||
else {
|
||||
memcpy(d, "plus", 4);
|
||||
|
|
@ -431,7 +432,7 @@ sanitize_file_name.
|
|||
Success: (SANITIZE_ERR_OK) *sanitized points to a sanitized copy of file_name.
|
||||
Failure: (!= SANITIZE_ERR_OK) *sanitized is NULL.
|
||||
*/
|
||||
static SANITIZEcode rename_if_reserved_dos(char **const sanitized,
|
||||
static SANITIZEcode rename_if_reserved_dos(char ** const sanitized,
|
||||
const char *file_name,
|
||||
int flags)
|
||||
{
|
||||
|
|
@ -462,7 +463,7 @@ static SANITIZEcode rename_if_reserved_dos(char **const sanitized,
|
|||
}
|
||||
#endif
|
||||
|
||||
if(len > PATH_MAX-1)
|
||||
if(len > PATH_MAX - 1)
|
||||
return SANITIZE_ERR_INVALID_PATH;
|
||||
|
||||
memcpy(fname, file_name, len);
|
||||
|
|
@ -511,7 +512,7 @@ static SANITIZEcode rename_if_reserved_dos(char **const sanitized,
|
|||
p_len = strlen(p);
|
||||
|
||||
/* Prepend a '_' */
|
||||
if(strlen(fname) == PATH_MAX-1)
|
||||
if(strlen(fname) == PATH_MAX - 1)
|
||||
return SANITIZE_ERR_INVALID_PATH;
|
||||
memmove(p + 1, p, p_len + 1);
|
||||
p[0] = '_';
|
||||
|
|
@ -534,7 +535,7 @@ static SANITIZEcode rename_if_reserved_dos(char **const sanitized,
|
|||
/* Prepend a '_' */
|
||||
size_t blen = strlen(base);
|
||||
if(blen) {
|
||||
if(strlen(fname) >= PATH_MAX-1)
|
||||
if(strlen(fname) >= PATH_MAX - 1)
|
||||
return SANITIZE_ERR_INVALID_PATH;
|
||||
memmove(base + 1, base, blen + 1);
|
||||
base[0] = '_';
|
||||
|
|
@ -613,7 +614,7 @@ struct curl_slist *GetLoadedModulePaths(void)
|
|||
struct curl_slist *slist = NULL;
|
||||
#ifndef CURL_WINDOWS_UWP
|
||||
HANDLE hnd = INVALID_HANDLE_VALUE;
|
||||
MODULEENTRY32 mod = {0};
|
||||
MODULEENTRY32 mod = { 0 };
|
||||
|
||||
mod.dwSize = sizeof(MODULEENTRY32);
|
||||
|
||||
|
|
@ -763,7 +764,8 @@ static DWORD WINAPI win_stdin_thread_func(void *thread_data)
|
|||
SOCKADDR_IN clientAddr;
|
||||
int clientAddrLen = sizeof(clientAddr);
|
||||
|
||||
curl_socket_t socket_w = CURL_ACCEPT(tdata->socket_l, (SOCKADDR*)&clientAddr,
|
||||
curl_socket_t socket_w = CURL_ACCEPT(tdata->socket_l,
|
||||
(SOCKADDR *)&clientAddr,
|
||||
&clientAddrLen);
|
||||
|
||||
if(socket_w == CURL_SOCKET_BAD) {
|
||||
|
|
@ -822,7 +824,7 @@ curl_socket_t win32_stdin_read_thread(void)
|
|||
|
||||
do {
|
||||
/* Prepare handles for thread */
|
||||
tdata = (struct win_thread_data*)
|
||||
tdata = (struct win_thread_data *)
|
||||
curlx_calloc(1, sizeof(struct win_thread_data));
|
||||
if(!tdata) {
|
||||
errorf("curlx_calloc() error");
|
||||
|
|
@ -841,14 +843,14 @@ curl_socket_t win32_stdin_read_thread(void)
|
|||
selfaddr.sin_family = AF_INET;
|
||||
selfaddr.sin_addr.S_un.S_addr = htonl(INADDR_LOOPBACK);
|
||||
/* Bind to any available loopback port */
|
||||
result = bind(tdata->socket_l, (SOCKADDR*)&selfaddr, socksize);
|
||||
result = bind(tdata->socket_l, (SOCKADDR *)&selfaddr, socksize);
|
||||
if(result == SOCKET_ERROR) {
|
||||
errorf("bind error: %d", SOCKERRNO);
|
||||
break;
|
||||
}
|
||||
|
||||
/* Bind to any available loopback port */
|
||||
result = getsockname(tdata->socket_l, (SOCKADDR*)&selfaddr, &socksize);
|
||||
result = getsockname(tdata->socket_l, (SOCKADDR *)&selfaddr, &socksize);
|
||||
if(result == SOCKET_ERROR) {
|
||||
errorf("getsockname error: %d", SOCKERRNO);
|
||||
break;
|
||||
|
|
@ -892,7 +894,7 @@ curl_socket_t win32_stdin_read_thread(void)
|
|||
/* Hard close the socket on closesocket() */
|
||||
setsockopt(socket_r, SOL_SOCKET, SO_DONTLINGER, 0, 0);
|
||||
|
||||
if(connect(socket_r, (SOCKADDR*)&selfaddr, socksize) == SOCKET_ERROR) {
|
||||
if(connect(socket_r, (SOCKADDR *)&selfaddr, socksize) == SOCKET_ERROR) {
|
||||
errorf("connect error: %d", SOCKERRNO);
|
||||
break;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue