summaryrefslogtreecommitdiff
path: root/lib/parsedate.c
Commit message (Collapse)AuthorAgeFilesLines
* strcasecompare: all case insensitive string compares ignore locale nowDaniel Stenberg2016-10-311-4/+4
| | | | | We had some confusions on when each function was used. We should not act differently on different locales anyway.
* parsedate: handle cut off numbers betterDaniel Stenberg2016-10-311-5/+7
| | | | | | | | | ... and don't read outside of the given buffer! CVE-2016-8621 bug: https://curl.haxx.se/docs/adv_20161102G.html Reported-by: Luật Nguyễn
* URLs: change all http:// URLs to https://Daniel Stenberg2016-02-031-1/+1
|
* parsedate.c: Fixed compilation warningSteve Holme2014-12-101-1/+1
| | | | | | | | parsedate.c:548: warning: 'parsed' may be used uninitialized in this function As curl_getdate() returns -1 when parsedate() fails we can initialise parsed to -1.
* parsedate.c: fix the return code for an overflow edge conditionDan Fandrich2014-08-051-5/+4
|
* parsedate.c: check sscanf result before passing it to strlenMarc Hoersken2014-04-191-4/+6
|
* parsedate: Fixed compilation warningJiri Malak2014-03-021-0/+2
| | | | | Remove compilation message for platforms where size of long type is equal size of int type.
* parsedate: avoid integer overflowEric Lubin2013-12-111-2/+2
| | | | | | | | | | | | | In C, signed integer overflow is undefined behavior. Thus, the compiler is allowed to assume that it will not occur. In the check for an overflow, the developer assumes that the signed integer of type time_t will wrap around if it overflows. However, this behavior is undefined in the C standard. Thus, when the compiler sees this, it simplifies t + delta < t to delta < 0. Since delta > 0 and delta < 0 can't both be true, the entire if statement is optimized out under certain optimization levels. Thus, the parsedate function would return PARSEDATE_OK with an undefined value in the time, instead of return -1 = PARSEDATE_FAIL.
* build: fix circular header inclusion with other packagesYang Tse2013-01-091-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit renames lib/setup.h to lib/curl_setup.h and renames lib/setup_once.h to lib/curl_setup_once.h. Removes the need and usage of a header inclusion guard foreign to libcurl. [1] Removes the need and presence of an alarming notice we carried in old setup_once.h [2] ---------------------------------------- 1 - lib/setup_once.h used __SETUP_ONCE_H macro as header inclusion guard up to commit ec691ca3 which changed this to HEADER_CURL_SETUP_ONCE_H, this single inclusion guard is enough to ensure that inclusion of lib/setup_once.h done from lib/setup.h is only done once. Additionally lib/setup.h has always used __SETUP_ONCE_H macro to protect inclusion of setup_once.h even after commit ec691ca3, this was to avoid a circular header inclusion triggered when building a c-ares enabled version with c-ares sources available which also has a setup_once.h header. Commit ec691ca3 exposes the real nature of __SETUP_ONCE_H usage in lib/setup.h, it is a header inclusion guard foreign to libcurl belonging to c-ares's setup_once.h The renaming this commit does, fixes the circular header inclusion, and as such removes the need and usage of a header inclusion guard foreign to libcurl. Macro __SETUP_ONCE_H no longer used in libcurl. 2 - Due to the circular interdependency of old lib/setup_once.h and the c-ares setup_once.h header, old file lib/setup_once.h has carried back from 2006 up to now days an alarming and prominent notice about the need of keeping libcurl's and c-ares's setup_once.h in sync. Given that this commit fixes the circular interdependency, the need and presence of mentioned notice is removed. All mentioned interdependencies come back from now old days when the c-ares project lived inside a curl subdirectory. This commit removes last traces of such fact.
* Revert changes relative to lib/*.[ch] recent renamingYang Tse2013-01-061-0/+580
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts renaming and usage of lib/*.h header files done 28-12-2012, reverting 2 commits: f871de0... build: make use of 76 lib/*.h renamed files ffd8e12... build: rename 76 lib/*.h files This also reverts removal of redundant include guard (redundant thanks to changes in above commits) done 2-12-2013, reverting 1 commit: c087374... curl_setup.h: remove redundant include guard This also reverts renaming and usage of lib/*.c source files done 3-12-2013, reverting 3 commits: 13606bb... build: make use of 93 lib/*.c renamed files 5b6e792... build: rename 93 lib/*.c files 7d83dff... build: commit 13606bbfde follow-up 1 Start of related discussion thread: http://curl.haxx.se/mail/lib-2013-01/0012.html Asking for confirmation on pushing this revertion commit: http://curl.haxx.se/mail/lib-2013-01/0048.html Confirmation summary: http://curl.haxx.se/mail/lib-2013-01/0079.html NOTICE: The list of 2 files that have been modified by other intermixed commits, while renamed, and also by at least one of the 6 commits this one reverts follows below. These 2 files will exhibit a hole in history unless git's '--follow' option is used when viewing logs. lib/curl_imap.h lib/curl_smtp.h
* build: rename 93 lib/*.c filesYang Tse2013-01-031-580/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 93 lib/*.c source files renamed to use our standard naming scheme. This commit only does the file renaming. ---------------------------------------- renamed: lib/amigaos.c -> lib/curl_amigaos.c renamed: lib/asyn-ares.c -> lib/curl_asyn_ares.c renamed: lib/asyn-thread.c -> lib/curl_asyn_thread.c renamed: lib/axtls.c -> lib/curl_axtls.c renamed: lib/base64.c -> lib/curl_base64.c renamed: lib/bundles.c -> lib/curl_bundles.c renamed: lib/conncache.c -> lib/curl_conncache.c renamed: lib/connect.c -> lib/curl_connect.c renamed: lib/content_encoding.c -> lib/curl_content_encoding.c renamed: lib/cookie.c -> lib/curl_cookie.c renamed: lib/cyassl.c -> lib/curl_cyassl.c renamed: lib/dict.c -> lib/curl_dict.c renamed: lib/easy.c -> lib/curl_easy.c renamed: lib/escape.c -> lib/curl_escape.c renamed: lib/file.c -> lib/curl_file.c renamed: lib/fileinfo.c -> lib/curl_fileinfo.c renamed: lib/formdata.c -> lib/curl_formdata.c renamed: lib/ftp.c -> lib/curl_ftp.c renamed: lib/ftplistparser.c -> lib/curl_ftplistparser.c renamed: lib/getenv.c -> lib/curl_getenv.c renamed: lib/getinfo.c -> lib/curl_getinfo.c renamed: lib/gopher.c -> lib/curl_gopher.c renamed: lib/gtls.c -> lib/curl_gtls.c renamed: lib/hash.c -> lib/curl_hash.c renamed: lib/hmac.c -> lib/curl_hmac.c renamed: lib/hostasyn.c -> lib/curl_hostasyn.c renamed: lib/hostcheck.c -> lib/curl_hostcheck.c renamed: lib/hostip.c -> lib/curl_hostip.c renamed: lib/hostip4.c -> lib/curl_hostip4.c renamed: lib/hostip6.c -> lib/curl_hostip6.c renamed: lib/hostsyn.c -> lib/curl_hostsyn.c renamed: lib/http.c -> lib/curl_http.c renamed: lib/http_chunks.c -> lib/curl_http_chunks.c renamed: lib/http_digest.c -> lib/curl_http_digest.c renamed: lib/http_negotiate.c -> lib/curl_http_negotiate.c renamed: lib/http_negotiate_sspi.c -> lib/curl_http_negotiate_sspi.c renamed: lib/http_proxy.c -> lib/curl_http_proxy.c renamed: lib/idn_win32.c -> lib/curl_idn_win32.c renamed: lib/if2ip.c -> lib/curl_if2ip.c renamed: lib/imap.c -> lib/curl_imap.c renamed: lib/inet_ntop.c -> lib/curl_inet_ntop.c renamed: lib/inet_pton.c -> lib/curl_inet_pton.c renamed: lib/krb4.c -> lib/curl_krb4.c renamed: lib/krb5.c -> lib/curl_krb5.c renamed: lib/ldap.c -> lib/curl_ldap.c renamed: lib/llist.c -> lib/curl_llist.c renamed: lib/md4.c -> lib/curl_md4.c renamed: lib/md5.c -> lib/curl_md5.c renamed: lib/memdebug.c -> lib/curl_memdebug.c renamed: lib/mprintf.c -> lib/curl_mprintf.c renamed: lib/multi.c -> lib/curl_multi.c renamed: lib/netrc.c -> lib/curl_netrc.c renamed: lib/non-ascii.c -> lib/curl_non_ascii.c renamed: lib/curl_non-ascii.h -> lib/curl_non_ascii.h renamed: lib/nonblock.c -> lib/curl_nonblock.c renamed: lib/nss.c -> lib/curl_nss.c renamed: lib/nwlib.c -> lib/curl_nwlib.c renamed: lib/nwos.c -> lib/curl_nwos.c renamed: lib/openldap.c -> lib/curl_openldap.c renamed: lib/parsedate.c -> lib/curl_parsedate.c renamed: lib/pingpong.c -> lib/curl_pingpong.c renamed: lib/polarssl.c -> lib/curl_polarssl.c renamed: lib/pop3.c -> lib/curl_pop3.c renamed: lib/progress.c -> lib/curl_progress.c renamed: lib/qssl.c -> lib/curl_qssl.c renamed: lib/rawstr.c -> lib/curl_rawstr.c renamed: lib/rtsp.c -> lib/curl_rtsp.c renamed: lib/security.c -> lib/curl_security.c renamed: lib/select.c -> lib/curl_select.c renamed: lib/sendf.c -> lib/curl_sendf.c renamed: lib/share.c -> lib/curl_share.c renamed: lib/slist.c -> lib/curl_slist.c renamed: lib/smtp.c -> lib/curl_smtp.c renamed: lib/socks.c -> lib/curl_socks.c renamed: lib/socks_gssapi.c -> lib/curl_socks_gssapi.c renamed: lib/socks_sspi.c -> lib/curl_socks_sspi.c renamed: lib/speedcheck.c -> lib/curl_speedcheck.c renamed: lib/splay.c -> lib/curl_splay.c renamed: lib/ssh.c -> lib/curl_ssh.c renamed: lib/sslgen.c -> lib/curl_sslgen.c renamed: lib/ssluse.c -> lib/curl_ssluse.c renamed: lib/strdup.c -> lib/curl_strdup.c renamed: lib/strequal.c -> lib/curl_strequal.c renamed: lib/strerror.c -> lib/curl_strerror.c renamed: lib/strtok.c -> lib/curl_strtok.c renamed: lib/strtoofft.c -> lib/curl_strtoofft.c renamed: lib/telnet.c -> lib/curl_telnet.c renamed: lib/tftp.c -> lib/curl_tftp.c renamed: lib/timeval.c -> lib/curl_timeval.c renamed: lib/transfer.c -> lib/curl_transfer.c renamed: lib/url.c -> lib/curl_url.c renamed: lib/version.c -> lib/curl_version.c renamed: lib/warnless.c -> lib/curl_warnless.c renamed: lib/wildcard.c -> lib/curl_wildcard.c ----------------------------------------
* build: make use of 76 lib/*.h renamed filesYang Tse2012-12-281-4/+4
| | | | | | 76 private header files renamed to use our standard naming scheme. This change affects 322 files in libcurl's source tree.
* parsedate.c: fix a numeric overflowYang Tse2012-03-221-2/+23
|
* stdio.h, stdlib.h, string.h, stdarg.h and ctype.h inclusion done in setup_once.hYang Tse2011-07-261-7/+1
|
* parsedate: detect more invalid dates betterDaniel Stenberg2011-06-231-0/+4
|
* parsedate: turn private and staticDaniel Stenberg2011-06-031-3/+21
| | | | I removed the prefix as well accordingly.
* source cleanup: unify look, style and indent levelsDaniel Stenberg2011-04-271-3/+4
| | | | | By the use of a the new lib/checksrc.pl script that checks that our basic source style rules are followed.
* Fix a couple of spelling errors in lib/Fabian Keil2011-04-211-1/+1
| | | | Found with codespell.
* gmtime: remove defineDaniel Stenberg2011-02-141-2/+2
| | | | | | It turns out some systems rely on the gmtime or gmtime_r to be defined already in the system headers and thus my "precaution" redefining of them only caused trouble. They are now removed.
* Curl_gmtime: avoid future mistakesDaniel Stenberg2011-02-071-0/+9
| | | | | Document Curl_gmtime() and define away the old functions so that they won't be used internally again by mistake.
* Curl_gmtime: added a portable gmtimeDaniel Stenberg2011-02-071-1/+18
| | | | | | Instead of polluting many places with #ifdefs, we create a single place for this function, and also check return code properly so that a NULL pointer returned won't cause problems.
* fix compiler warning: conversion may lose significant bitsYang Tse2010-12-011-1/+2
|
* parsedate: allow time specified without secondsDaniel Stenberg2010-09-271-0/+6
| | | | | | | | | The date format in RFC822 allows that the seconds part of HH:MM:SS is left out, but this function didn't allow it. This change also includes a modified test case that makes sure that this now works. Reported by: Matt Ford Bug: http://curl.haxx.se/bug/view.cgi?id=3076529
* parsedate: Value stored to 'found' is never readDaniel Stenberg2010-04-171-2/+1
|
* remove the CVSish $Id$ linesDaniel Stenberg2010-03-241-1/+0
|
* - Ray Dassen provided a patch in Debian's bug tracker (bug number #551461)Daniel Stenberg2009-10-181-0/+30
| | | | | | that now makes curl_getdate(3) actually handles RFC 822 formatted dates that use the "single letter military timezones". http://www.rfc-ref.org/RFC-TEXTS/822/chapter5.html has the details.
* fix copyright yearDaniel Stenberg2009-09-031-1/+1
|
* provide and export Curl_parsedate() as a library-wide internal functionDaniel Stenberg2009-09-031-9/+39
| | | | for a better API to date parsing than the external API is
* moved the Curl_raw_ functions into the new lib/rawstr.c file for easier curlx_Daniel Stenberg2008-10-231-1/+1
| | | | inclusion by the curl tool without colliding with the curl_strequal functions.
* Changed some arrays of char* to arrays of char[] to reduce data size andDan Fandrich2008-10-221-1/+1
| | | | run-time relocations.
* Renamed Curl_ascii_equal to Curl_raw_equal and bugfixed the my_toupper functionDaniel Stenberg2008-10-161-3/+3
| | | | used in strequal.c so now all test cases run fine for me again.
* - Pascal Terjan filed bug #2154627Daniel Stenberg2008-10-151-3/+4
| | | | | | | | | | | (http://curl.haxx.se/bug/view.cgi?id=2154627) which pointed out that libcurl uses strcasecmp() in multiple places where it causes failures when the Turkish locale is used. This is because 'i' and 'I' isn't the same letter so strcasecmp() on those letters are different in Turkish than in English (or just about all other languages). I thus introduced a totally new internal function in libcurl (called Curl_ascii_equal) for doing case insentive comparisons for english-(ascii?) style strings that thus will make "file" and "FILE" match even if the Turkish locale is selected.
* I replaced the use of 'struct tm' with a private clone of that struct simplyDaniel Stenberg2008-10-091-5/+13
| | | | | because the struct is declared on the stack and not all members are used so we could just as well make struct with only struct members we actually need.
* Made the month days table static constDan Fandrich2008-09-291-2/+6
|
* - Introducing Jamie Lokier's function for date to epoch conversion used in theDaniel Stenberg2008-09-231-32/+40
| | | | | | date parser function. This makes our function less dependent on system- provided functions and instead we do all the magic ourselves. We also no longer depend on the TZ environment variable.
* fix compiler warning: external definition with no prior declarationYang Tse2008-09-181-0/+1
|
* Stopped using ranges in scanf character sequences (e.g. %[a-z]) since thatDan Fandrich2008-06-221-3/+1
| | | | | is not ANSI C, just a common extension. This caused problems on at least Open Watcom C.
* Jeff Johnson filed bug report #1863171Daniel Stenberg2008-01-061-4/+10
| | | | | | | (http://curl.haxx.se/bug/view.cgi?id=1863171) where he pointed out that libcurl's date parser didn't accept a +1300 time zone which actually is used fairly often (like New Zealand's Dailight Savings Time), so I modified the parser to now accept up to and including -1400 to +1400.
* All static functions that were previously name Curl_* something no longerDaniel Stenberg2007-12-081-3/+3
| | | | | use that prefix as we use that prefix only for library-wide internal global symbols.
* if () => if()Daniel Stenberg2007-11-071-2/+2
| | | | | while () => while() and some other minor re-indentings
* Constified from arguments.Gisle Vanem2007-11-061-3/+3
|
* Martin Skinner brought back bug report #1230118 to haunt us once again.Daniel Stenberg2006-12-051-15/+12
| | | | | | (http://curl.haxx.se/bug/view.cgi?id=1230118) curl_getdate() did not work properly for all input dates on Windows. It was mostly seen on some TZ time zones using DST. Luckily, Martin also provided a fix.
* Avoid typecasting a signed char to an int when using is*() functions, as thatDaniel Stenberg2006-10-171-4/+4
| | | | | | | | | could very well cause a negate number get passed in and thus cause reading outside of the array usually used for this purpose. We avoid this by using the uppercase macro versions introduced just now that does some extra crazy typecasts to avoid byte codes > 127 to cause negative int values.
* fix questionable compareMarty Kuhrt2005-12-301-1/+1
|
* putting back into distMarty Kuhrt2005-12-301-1/+1
|
* Michael Wallner reported that the date parser had wrong offset stored forDaniel Stenberg2005-10-041-2/+2
| | | | the MEST and CEST time zones.
* Christopher R. Palmer fixed the offsets used for date parsings when the timeDaniel Stenberg2005-08-091-43/+44
| | | | | | | zone name of a daylight savings time was used. For example, PDT vs PDS. This flaw was introduced with the new date parser (11 sep 2004 - 7.12.2). Fortunately, no web server or cookie string etc should be using such time zone names thus limiting the effect of this bug.
* Gisle Vanem came up with a nice little work-around for bug #1230118. ItDaniel Stenberg2005-07-051-1/+12
| | | | | | | seems the Windows (MSVC) libc time functions may return data one hour off if TZ is not set and automatic DST adjustment is enabled. This made curl_getdate() return wrong value, and it also concerned internal cookie expirations etc.
* Cory Nelson's work on nuking compiler warnings when building on x64 withDaniel Stenberg2005-04-261-1/+1
| | | | VS2005.
* Updated the copyright year since changes have been this year.Daniel Stenberg2005-03-311-1/+1
|