Commit Graph

26 Commits

Author SHA1 Message Date
c6ee3d79ad Fix syntax-check 'sc_prohibit_have_config_h'
* cfg.mk: Remove sc_prohibit_have_config_h from local-checks-to-skip
* libwget/*.c: Include <config.h> unconditionally
* src/*.c: Likewise
* tests/*.c: Likewise
2017-04-30 22:01:34 +02:00
8f0aa96537 Hide wget_cookie_st
* include/wget/wget.h: Remove struct wget_cookie_st declaration,
  add wget_cookie_to_setcookie(),
  add wget_cookie_parse_setcookie(),
  change wget_http_parse_setcookie() cookie param.
* libwget/cookie.c: Add struct wget_cookie_st declaration,
  (wget_cookie_init): Use xcalloc(),
  (wget_cookie_to_setcookie): New function,
  (wget_cookie_parse_setcookie): New function,
  (_wget_cookie_normalize_cookie): Fix host_only flag.
* libwget/http.c (wget_http_parse_setcookie): Code moved to
  wget_http_parse_setcookie(),
  (wget_http_parse_response_header): Amend cookie handling.
* tests/test.c (test_cookies): Amend test code and test data.
2017-04-20 16:02:18 +02:00
0f87534c33 * libwget/cookie.c: Silence -Wunused-parameter if without LIBPSL 2017-04-06 10:54:05 +02:00
7171aff7e8 Use atoll() instead of atol() for time_t variables
* libwget/cookie.c: Use atoll() instead of atol()
* libwget/hsts.c: Likewise
* libwget/http.c: Likewise
* libwget/ocsp.c: Likewise
* libwget/tls_session.c: Likewise
* libwget/hpkp.c: Change type of maxage from long to time_t
2017-03-29 16:18:26 +02:00
706b19648f Read and write time_t as long long int
* libwget/cookie.c: Write time_t as long long int
* libwget/hsts.c:   Likewise
* libwget/ocsp.c:   Likewise
* libwget/tls_session.c: Likewise
* libwget/hpkp.c:   Read and write time_t as long long int

Reported-By: Tim Rühsen
2017-03-29 11:58:51 +05:30
ec396c577f Fix URLs to HTTPS where possible 2017-02-28 15:31:30 +01:00
1a3a000428 Fix memleak in cookie code
* examples/http_get2.c: Use wget_cookie_db_free() to free cookie db
* libwget/cookie.c (wget_cookie_db_init): Fix #ifdef around PSL code
* libwget/init.c (wget_global_deinit): Use wget_cookie_db_free()
2017-02-21 13:19:27 +01:00
bfcd65c12b Use typedefs for function pointer arguments
* include/wget/wget.h: Add typedefs
* libwget/cookie.c: Use typedefs
* libwget/css.c: Likewise
* libwget/css_url.c: Likewise
* libwget/decompressor.c: Likewise
* libwget/hashmap.c: Likewise
* libwget/hsts.c: Likewise
* libwget/http.c: Likewise
* libwget/init.c: Likewise
* libwget/io.c: Likewise
* libwget/list.c: Likewise
* libwget/logger.c: Likewise
* libwget/metalink.c: Likewise
* libwget/net.c: Likewise
* libwget/netrc.c: Likewise
* libwget/ocsp.c: Likewise
* libwget/private.h: Likewise
* libwget/robots.c: Likewise
* libwget/stringmap.c: Likewise
* libwget/tls_session.c: Likewise
* libwget/vector.c: Likewise
* libwget/xml.c: Likewise
* src/blacklist.c: Likewise
* src/host.c: Likewise
* src/options.c: Likewise
* src/wget.c: Likewise
* tests/stringmap_perf.c: Likewise
* tests/test.c: Likewise
2017-01-23 14:43:17 +01:00
566e9f7c70 Add typedef for wget_update() callback functions
* include/wget/wget.h: Add typedef wget_update_cb_t
* libwget/cookie.c: Use wget_update_cb_t
* libwget/hsts.c: Likewise
* libwget/tls_session.c: Likewise
2017-01-19 17:11:58 +01:00
b9e7f48612 * libwget/cookie.c (_cookie_db_save): Fix ferror() check
Reported-by: Gisle Vanem
2017-01-06 10:36:08 +01:00
f240b0002a * libwget/cookie.c (wget_cookie_db_init): Fix argument of psl_latest() 2016-12-21 11:23:00 +01:00
38f0905f2f Take advantage of libpsl 0.16+
* libwget/cookie.c (wget_cookie_db_init): Use psl_latest() if possible
2016-12-12 15:59:48 +01:00
8b1a701c21 Use wget_strdup() instead of strdup()
* examples/getstream.c: Use wget_strdup().
* libwget/cookie.c: Likewise.
* libwget/encoding.c: Likewise.
* libwget/http.c: Likewise.
* libwget/iri.c: Likewise.
* libwget/netrc.c: Likewise.
* src/options.c: Likewise.
* src/wget.c: Likewise.
* tests/test.c: Likewise.
2016-11-03 09:58:09 +01:00
165cfa20fb Mark some functions as pure
* libwget/cookie.c (_compare_cookie{,2}): Mark as pure
* libwget/encoding.c (_utf8_is_valid): Same
* libwget/hsts.c (_compare_hsts): Same
* libwget/ocsp.c (_compare_ocsp): Same
* libwget/netrc.c (_compare_netrc): Same
* libwget/tls_session.c (_compare_tls_session): Same
2016-09-30 14:48:08 +02:00
9568b0c87e Rename include/libwget.h to include/wget/wget.h+wgetver.h 2016-09-30 09:47:32 +02:00
667127e193 Support cookie prefixes __Secure- and __Host-
* libwget/cookie.c (_wget_cookie_normalize_cookie): Add checks
  for __Secure- and __Host- prefixes.
* tests/test.c (test_cookies): Add test cases for the prefixes.

This change implements proposals from draft-ietf-httpbis-cookie-prefixes-00
as modern browsers do.
2016-08-28 00:01:19 +02:00
aa389831a8 Use bitfields in structs where possible 2016-07-11 14:53:36 +02:00
9b16dc1011 Tune cookie parsing
* include/libwget.h.in: Add sort_age to struct wget_cookie_st
* libwget/cookie.c: Many code enhancements
* libwget/http.c (wget_http_parse_setcookie): Relax parsing,
  (wget_http_parse_setcookie): Allow \n and \r\n as EOL
* libwget/private.h: Add missing #includes
* tests/Makefile.am: Add disabled test-cookies-http_state
* tests/test-cookies-http_state.c: New cookie test

There still 30 out of 220 tests failing, before this commit we had
135 failing. The left over tests are mainly corner cases, but feel free
to work on it. When all tests pass, we enable test-cookies-http_state
in Makefile.am.
2016-03-18 17:01:49 +01:00
dd3c2f63b2 Updated copyright year for all relevant files 2016-01-25 13:06:21 +01:00
0ecbd6e69a Removed redundant buffer print routines
Removed wget_buffer_vprintf_append, wget_buffer_printf_append,
wget_buffer_vprintf2 and wget_buffer_printf2.
Renamed their *2 counterpart to their old names.
2016-01-13 15:01:43 +01:00
1e8c3848d0 Call wget_str(n)casecmp_ascii instead of str(n)casecmp
* examples/print_css_urls2.c, libwget/cookie.c, libwget/css.c,
  libwget/html_url.c, libwget/http.c, libwget/iri.c, libwget/metalink.c,
  libwget/net.c, libwget/robots.c, libwget/ssl_gnutls.c,
  libwget/stringmap.c, libwget/xml.c, src/job.c, src/options.c, src/wget.c:
  Call wget_str(n)casecmp_ascii instead of str(n)casecmp
2016-01-11 16:26:25 +01:00
947bbdcb3e Fix return value in HSTS and Cookie code
* libwget/cookie.c (wget_cookie_db_load, wget_cookie_db_save):
  Fix return value
* libwget/hsts.c (wget_hsts_db_load, wget_hsts_db_save):
  Fix return value
2015-11-23 22:01:10 +01:00
ed5835f446 Cleanup cookie code
Cookies: Add new function wget_cookie_set_keep_session_cookies()
         and adjust wget_cookie_db_load() and wget_cookie_db_save().
         Use wget_update_file() for loading and saving.
2015-11-23 16:43:27 +01:00
18bdc20576 Replaced strndup() by wget_strmemdup()
* examples/getstream.c, examples/print_css_urls2.c, libwget/cookie.c,
  libwget/css_url.c, libwget/encoding.c, libwget/hsts.c,
  libwget/html_url.c, libwget/http.c, libwget/metalink.c,
  libwget/ocsp.c, libwget/robots.c, libwget/ssl_gnutls.c,
  src/options.c, src/wget.c, tests/stringmap_perf.c,
  tests/test-wget-1.c

Strndup() calls an additional strlen() on the input string.
This is normally not needed, and thus just consumes CPU cycles.
All calls to strndup() could be replaced by wget_strmemdup, which
basically allocates len+1 memory, calls memcpy and terminates with
a 0 byte.
2015-11-10 10:55:30 +01:00
0f8e49128a Transfer copyright to Free Software Foundation, Inc. 2015-09-22 11:50:06 +02:00
c6b0e461a1 Transform Mget into Wget 2015-09-19 22:54:38 +02:00