mirror of
https://github.com/moparisthebest/curl
synced 2024-11-10 11:35:07 -05:00
removed URL size restrictions
This commit is contained in:
parent
b2ad1f68cc
commit
42280e95bf
@ -233,7 +233,7 @@ CURLcode dict(struct connectdata *conn)
|
|||||||
int i;
|
int i;
|
||||||
|
|
||||||
ppath++;
|
ppath++;
|
||||||
for (i = 0; (i < URL_MAX_LENGTH) && (ppath[i]); i++) {
|
for (i = 0; ppath[i]; i++) {
|
||||||
if (ppath[i] == ':')
|
if (ppath[i] == ':')
|
||||||
ppath[i] = ' ';
|
ppath[i] = ' ';
|
||||||
}
|
}
|
||||||
|
@ -327,7 +327,7 @@ CURLcode http(struct connectdata *conn)
|
|||||||
}
|
}
|
||||||
if ((data->bits.httpproxy) && !(conn->protocol&PROT_HTTPS)) {
|
if ((data->bits.httpproxy) && !(conn->protocol&PROT_HTTPS)) {
|
||||||
/* The path sent to the proxy is in fact the entire URL */
|
/* The path sent to the proxy is in fact the entire URL */
|
||||||
strncpy(ppath, data->url, URL_MAX_LENGTH-1);
|
ppath = data->url;
|
||||||
}
|
}
|
||||||
if(data->bits.http_formpost) {
|
if(data->bits.http_formpost) {
|
||||||
/* we must build the whole darned post sequence first, so that we have
|
/* we must build the whole darned post sequence first, so that we have
|
||||||
|
24
lib/url.c
24
lib/url.c
@ -677,6 +677,9 @@ CURLcode curl_disconnect(CURLconnect *c_connect)
|
|||||||
if(conn->hostent_buf) /* host name info */
|
if(conn->hostent_buf) /* host name info */
|
||||||
free(conn->hostent_buf);
|
free(conn->hostent_buf);
|
||||||
|
|
||||||
|
if(conn->path) /* the URL path part */
|
||||||
|
free(conn->path);
|
||||||
|
|
||||||
free(conn); /* free the connection oriented data */
|
free(conn); /* free the connection oriented data */
|
||||||
|
|
||||||
/* clean up the sockets and SSL stuff from the previous "round" */
|
/* clean up the sockets and SSL stuff from the previous "round" */
|
||||||
@ -696,6 +699,7 @@ static CURLcode _connect(CURL *curl, CURLconnect **in_connect)
|
|||||||
#ifdef HAVE_SIGACTION
|
#ifdef HAVE_SIGACTION
|
||||||
struct sigaction sigact;
|
struct sigaction sigact;
|
||||||
#endif
|
#endif
|
||||||
|
int urllen;
|
||||||
|
|
||||||
if(!data || (data->handle != STRUCT_OPEN))
|
if(!data || (data->handle != STRUCT_OPEN))
|
||||||
return CURLE_BAD_FUNCTION_ARGUMENT; /* TBD: make error codes */
|
return CURLE_BAD_FUNCTION_ARGUMENT; /* TBD: make error codes */
|
||||||
@ -734,13 +738,25 @@ static CURLcode _connect(CURL *curl, CURLconnect **in_connect)
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* We need to allocate memory to store the path in. We get the size of the
|
||||||
|
full URL to be sure, and we need to make it at least 256 bytes since
|
||||||
|
other parts of the code will rely on this fact */
|
||||||
|
#define LEAST_PATH_ALLOC 256
|
||||||
|
urllen=strlen(data->url);
|
||||||
|
if(urllen < LEAST_PATH_ALLOC)
|
||||||
|
urllen=LEAST_PATH_ALLOC;
|
||||||
|
|
||||||
|
conn->path=(char *)malloc(urllen);
|
||||||
|
if(NULL == conn->path)
|
||||||
|
return CURLE_OUT_OF_MEMORY; /* really bad error */
|
||||||
|
|
||||||
/* Parse <url> */
|
/* Parse <url> */
|
||||||
/* We need to parse the url, even when using the proxy, because
|
/* We need to parse the url, even when using the proxy, because
|
||||||
* we will need the hostname and port in case we are trying
|
* we will need the hostname and port in case we are trying
|
||||||
* to SSL connect through the proxy -- and we don't know if we
|
* to SSL connect through the proxy -- and we don't know if we
|
||||||
* will need to use SSL until we parse the url ...
|
* will need to use SSL until we parse the url ...
|
||||||
*/
|
*/
|
||||||
if((2 == sscanf(data->url, "%64[^:]://%" URL_MAX_LENGTH_TXT "[^\n]",
|
if((2 == sscanf(data->url, "%64[^:]://%[^\n]",
|
||||||
conn->proto,
|
conn->proto,
|
||||||
conn->path)) && strequal(conn->proto, "file")) {
|
conn->path)) && strequal(conn->proto, "file")) {
|
||||||
/* we deal with file://<host>/<path> differently since it
|
/* we deal with file://<host>/<path> differently since it
|
||||||
@ -760,11 +776,11 @@ static CURLcode _connect(CURL *curl, CURLconnect **in_connect)
|
|||||||
strcpy(conn->path, "/");
|
strcpy(conn->path, "/");
|
||||||
|
|
||||||
if (2 > sscanf(data->url,
|
if (2 > sscanf(data->url,
|
||||||
"%64[^\n:]://%256[^\n/]%" URL_MAX_LENGTH_TXT "[^\n]",
|
"%64[^\n:]://%256[^\n/]%[^\n]",
|
||||||
conn->proto, conn->gname, conn->path)) {
|
conn->proto, conn->gname, conn->path)) {
|
||||||
|
|
||||||
/* badly formatted, let's try the browser-style _without_ 'http://' */
|
/* badly formatted, let's try the browser-style _without_ 'http://' */
|
||||||
if((1 > sscanf(data->url, "%256[^\n/]%" URL_MAX_LENGTH_TXT "[^\n]",
|
if((1 > sscanf(data->url, "%256[^\n/]%[^\n]",
|
||||||
conn->gname, conn->path)) ) {
|
conn->gname, conn->path)) ) {
|
||||||
failf(data, "<url> malformed");
|
failf(data, "<url> malformed");
|
||||||
return CURLE_URL_MALFORMAT;
|
return CURLE_URL_MALFORMAT;
|
||||||
@ -1548,6 +1564,8 @@ CURLcode curl_connect(CURL *curl, CURLconnect **in_connect)
|
|||||||
in the connectdata struct, free those here */
|
in the connectdata struct, free those here */
|
||||||
conn = (struct connectdata *)*in_connect;
|
conn = (struct connectdata *)*in_connect;
|
||||||
if(conn) {
|
if(conn) {
|
||||||
|
if(conn->path)
|
||||||
|
free(conn->path);
|
||||||
if(conn->hostent_buf)
|
if(conn->hostent_buf)
|
||||||
free(conn->hostent_buf);
|
free(conn->hostent_buf);
|
||||||
free(conn);
|
free(conn);
|
||||||
|
@ -175,7 +175,7 @@ struct connectdata {
|
|||||||
char proto[64];
|
char proto[64];
|
||||||
char gname[256];
|
char gname[256];
|
||||||
char *name;
|
char *name;
|
||||||
char path[URL_MAX_LENGTH];
|
char *path; /* formerly staticly this size: URL_MAX_LENGTH */
|
||||||
char *ppath;
|
char *ppath;
|
||||||
long bytecount;
|
long bytecount;
|
||||||
struct timeval now;
|
struct timeval now;
|
||||||
|
Loading…
Reference in New Issue
Block a user