diff options
author | Elliott Hughes <enh@google.com> | 2018-02-27 14:57:55 -0800 |
---|---|---|
committer | Elliott Hughes <enh@google.com> | 2018-02-27 14:57:55 -0800 |
commit | 0128fe4043cdbb72cc0c5b8f817749e3f89a7b36 (patch) | |
tree | ba15caf6905acc99ac3fbab158d7bf2fb0364a21 /lib/curl_fnmatch.c | |
parent | f9711a93659ab05f72b38dbdfbc475b797042693 (diff) | |
download | android_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.c | 16 |
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); } |