aboutsummaryrefslogtreecommitdiffstats
path: root/lib/curl_fnmatch.c
diff options
context:
space:
mode:
authorElliott Hughes <enh@google.com>2018-02-27 14:57:55 -0800
committerElliott Hughes <enh@google.com>2018-02-27 14:57:55 -0800
commit0128fe4043cdbb72cc0c5b8f817749e3f89a7b36 (patch)
treeba15caf6905acc99ac3fbab158d7bf2fb0364a21 /lib/curl_fnmatch.c
parentf9711a93659ab05f72b38dbdfbc475b797042693 (diff)
downloadandroid_external_curl-0128fe4043cdbb72cc0c5b8f817749e3f89a7b36.tar.gz
android_external_curl-0128fe4043cdbb72cc0c5b8f817749e3f89a7b36.tar.bz2
android_external_curl-0128fe4043cdbb72cc0c5b8f817749e3f89a7b36.zip
Update to 7.58.0 - January 24 2018.
Changes: new libssh-powered SSH SCP/SFTP back-end curl-config: add --ssl-backends Bugfixes: http2: fix incorrect trailer buffer size http: prevent custom Authorization headers in redirects travis: add boringssl build examples/xmlstream.c: don't switch off CURL_GLOBAL_SSL SSL: Avoid magic allocation of SSL backend specific data lib: don't export all symbols, just everything curl_* libssh2: send the correct CURLE error code on scp file not found libssh2: return CURLE_UPLOAD_FAILED on failure to upload openssl: enable pkcs12 in boringssl builds libssh2: remove dead code from SSH_SFTP_QUOTE sasl_getmesssage: make sure we have a long enough string to pass conncache: fix several lock issues threaded-shared-conn.c: new example conncache: only allow multiplexing within same multi handle configure: check for netinet/in6.h URL: tolerate backslash after drive letter for FILE: openldap: add commented out debug possibilities include: get netinet/in.h before linux/tcp.h CONNECT: keep close connection flag in http_connect_state struct BINDINGS: another PostgreSQL client curl: limit -# update frequency for unknown total size configure: add AX_CODE_COVERAGE only if using gcc curl.h: remove incorrect comment about ERRORBUFFER openssl: improve data-pending check for https proxy curl: remove __EMX__ #ifdefs CURLOPT_PRIVATE.3: fix grammar sftp: allow quoted commands to use relative paths CURLOPT_DNS_CACHE_TIMEOUT.3: see also CURLOPT_RESOLVE RESOLVE: output verbose text when trying to set a duplicate name openssl: Disable file buffering for Win32 SSLKEYLOGFILE multi_done: prune DNS cache tests: update .gitignore for libtests tests: mark data files as non-executable in git CURLOPT_DNS_LOCAL_IP4.3: fixed the "SEE ALSO" to not self-reference curl.1: documented two missing valid exit codes curl.1: mention http:// and https:// as valid proxy prefixes vtls: replaced getenv() with curl_getenv() setopt: less *or equal* than INT_MAX/1000 should be fine examples/smtp-mail.c: use separate defines for options and mail curl: support >256 bytes warning messsages conncache: fix a return code krb5: fix a potential access of uninitialized memory rand: add a clang-analyzer work-around CURLOPT_READFUNCTION.3: refer to argument with correct name brotli: allow compiling with version 0.6.0 content_encoding: rework zlib_inflate curl_easy_reset: release mime-related data examples/rtsp: fix error handling macros build-openssl.bat: Added support for VC15 build-wolfssl.bat: Added support for VC15 build: Added Visual Studio 2017 project files winbuild: Added support for VC15 curl: Support size modifiers for --max-filesize examples/cacertinmem: ignore cert-already-exists error brotli: data at the end of content can be lost curl_version_info.3: call the argument 'age' openssl: fix memory leak of SSLKEYLOGFILE filename build: remove HAVE_LIMITS_H check --mail-rcpt: fix short-text description scripts: allow all perl scripts to be run directly progress: calculate transfer speed on milliseconds if possible system.h: check __LONG_MAX__ for defining curl_off_t easy: fix connection ownership in curl_easy_pause setopt: reintroduce non-static Curl_vsetopt() for OS400 support setopt: fix SSLVERSION to allow CURL_SSLVERSION_MAX_ values configure.ac: append extra linker flags instead of prepending them HTTP: bail out on negative Content-Length: values docs: comment about CURLE_READ_ERROR returned by curl_mime_filedata mime: clone mime tree upon easy handle duplication openssl: enable SSLKEYLOGFILE support by default smtp/pop3/imap_get_message: decrease the data length too... CURLOPT_TCP_NODELAY.3: fix typo SMB: fix numeric constant suffix and variable types ftp-wildcard: fix matching an empty string with "*[^a]" curl_fnmatch: only allow 5 '*' sections in a single pattern openssl: fix potential memory leak in SSLKEYLOGFILE logic SSH: Fix state machine for ssh-agent authentication examples/url2file.c: add missing curl_global_cleanup() call http2: don't close connection when single transfer is stopped libcurl-env.3: first version curl: progress bar refresh, get width using ioctl() CONNECT_TO: fail attempt to set an IPv6 numerical without IPv6 support Bug: N/A Test: builds, boots, `vendor/google/tools/fake-ota on streaming` works Change-Id: I91e0837f7b34a785f5bddb173262038dcaabdcda
Diffstat (limited to 'lib/curl_fnmatch.c')
-rw-r--r--lib/curl_fnmatch.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/lib/curl_fnmatch.c b/lib/curl_fnmatch.c
index 8a1e106..f33bba1 100644
--- a/lib/curl_fnmatch.c
+++ b/lib/curl_fnmatch.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -301,7 +301,8 @@ fail:
return SETCHARSET_FAIL;
}
-static int loop(const unsigned char *pattern, const unsigned char *string)
+static int loop(const unsigned char *pattern, const unsigned char *string,
+ int maxstars)
{
loop_state state = CURLFNM_LOOP_DEFAULT;
unsigned char *p = (unsigned char *)pattern;
@@ -313,11 +314,14 @@ static int loop(const unsigned char *pattern, const unsigned char *string)
switch(state) {
case CURLFNM_LOOP_DEFAULT:
if(*p == '*') {
+ if(!maxstars)
+ return CURL_FNMATCH_NOMATCH;
while(*(p + 1) == '*') /* eliminate multiple stars */
p++;
if(*s == '\0' && *(p + 1) == '\0')
return CURL_FNMATCH_MATCH;
- rc = loop(p + 1, s); /* *.txt matches .txt <=> .txt matches .txt */
+ rc = loop(p + 1, s, maxstars - 1); /* *.txt matches .txt <=>
+ .txt matches .txt */
if(rc == CURL_FNMATCH_MATCH)
return CURL_FNMATCH_MATCH;
if(*s) /* let the star eat up one character */
@@ -376,7 +380,9 @@ static int loop(const unsigned char *pattern, const unsigned char *string)
if(found) {
p = pp + 1;
- s++;
+ if(*s)
+ /* don't advance if we're matching on an empty string */
+ s++;
memset(charset, 0, CURLFNM_CHSET_SIZE);
}
else
@@ -414,5 +420,5 @@ int Curl_fnmatch(void *ptr, const char *pattern, const char *string)
if(!pattern || !string) {
return CURL_FNMATCH_FAIL;
}
- return loop((unsigned char *)pattern, (unsigned char *)string);
+ return loop((unsigned char *)pattern, (unsigned char *)string, 5);
}