Skip to content
Snippets Groups Projects
  1. May 20, 2014
  2. Feb 04, 2014
  3. Dec 20, 2013
  4. Jul 15, 2013
  5. Jun 25, 2013
    • Daniel Stenberg's avatar
      formpost: better random boundaries · 365c5ba3
      Daniel Stenberg authored
      When doing multi-part formposts, libcurl used a pseudo-random value that
      was seeded with time(). This turns out to be bad for users who formpost
      data that is provided with users who then can guess how the boundary
      string will look like and then they can forge a different formpost part
      and trick the receiver.
      
      My advice to such implementors is (still even after this change) to not
      rely on the boundary strings being cryptographically strong. Fix your
      code and logic to not depend on them that much!
      
      I moved the Curl_rand() function into the sslgen.c source file now to be
      able to take advantage of the SSL library's random function if it
      provides one. If not, try to use the RANDOM_FILE for seeding and as a
      last resort keep the old logic, just modified to also add microseconds
      which makes it harder to properly guess the exact seed.
      
      The formboundary() function in formdata.c is now using 64 bit entropy
      for the boundary and therefore the string of dashes was reduced by 4
      letters and there are 16 hex digits following it. The total length is
      thus still the same.
      
      Bug: http://curl.haxx.se/bug/view.cgi?id=1251
      Reported-by: "Floris"
      365c5ba3
  6. Jan 08, 2013
    • Yang Tse's avatar
      build: fix circular header inclusion with other packages · 5a053ffe
      Yang Tse authored
      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.
      5a053ffe
  7. Jan 06, 2013
    • Yang Tse's avatar
      Revert changes relative to lib/*.[ch] recent renaming · 4a5aa668
      Yang Tse authored
      This reverts renaming and usage of lib/*.h header files done
      28-12-2012, reverting 2 commits:
      
        f871de00... build: make use of 76 lib/*.h renamed files
        ffd8e127... 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:
      
        c087374c... 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:
      
        13606bbf... build: make use of 93 lib/*.c renamed files
        5b6e7927... build: rename 93 lib/*.c files
        7d83dfff... build: commit 13606bbf 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
      4a5aa668
  8. Dec 28, 2012
    • Yang Tse's avatar
      build: rename 76 lib/*.h files · ffd8e127
      Yang Tse authored
      76 private header files renamed to use our standard naming scheme.
      
      This commit only does the file renaming.
      
      ----------------------------------------
      
        renamed:    amigaos.h -> curl_amigaos.h
        renamed:    arpa_telnet.h -> curl_arpa_telnet.h
        renamed:    asyn.h -> curl_asyn.h
        renamed:    axtls.h -> curl_axtls.h
        renamed:    bundles.h -> curl_bundles.h
        renamed:    conncache.h -> curl_conncache.h
        renamed:    connect.h -> curl_connect.h
        renamed:    content_encoding.h -> curl_content_encoding.h
        renamed:    cookie.h -> curl_cookie.h
        renamed:    cyassl.h -> curl_cyassl.h
        renamed:    dict.h -> curl_dict.h
        renamed:    easyif.h -> curl_easyif.h
        renamed:    escape.h -> curl_escape.h
        renamed:    file.h -> curl_file.h
        renamed:    fileinfo.h -> curl_fileinfo.h
        renamed:    formdata.h -> curl_formdata.h
        renamed:    ftp.h -> curl_ftp.h
        renamed:    ftplistparser.h -> curl_ftplistparser.h
        renamed:    getinfo.h -> curl_getinfo.h
        renamed:    gopher.h -> curl_gopher.h
        renamed:    gtls.h -> curl_gtls.h
        renamed:    hash.h -> curl_hash.h
        renamed:    hostcheck.h -> curl_hostcheck.h
        renamed:    hostip.h -> curl_hostip.h
        renamed:    http.h -> curl_http.h
        renamed:    http_chunks.h -> curl_http_chunks.h
        renamed:    http_digest.h -> curl_http_digest.h
        renamed:    http_negotiate.h -> curl_http_negotiate.h
        renamed:    http_proxy.h -> curl_http_proxy.h
        renamed:    if2ip.h -> curl_if2ip.h
        renamed:    imap.h -> curl_imap.h
        renamed:    inet_ntop.h -> curl_inet_ntop.h
        renamed:    inet_pton.h -> curl_inet_pton.h
        renamed:    krb4.h -> curl_krb4.h
        renamed:    llist.h -> curl_llist.h
        renamed:    memdebug.h -> curl_memdebug.h
        renamed:    multiif.h -> curl_multiif.h
        renamed:    netrc.h -> curl_netrc.h
        renamed:    non-ascii.h -> curl_non-ascii.h
        renamed:    nonblock.h -> curl_nonblock.h
        renamed:    nssg.h -> curl_nssg.h
        renamed:    parsedate.h -> curl_parsedate.h
        renamed:    pingpong.h -> curl_pingpong.h
        renamed:    polarssl.h -> curl_polarssl.h
        renamed:    pop3.h -> curl_pop3.h
        renamed:    progress.h -> curl_progress.h
        renamed:    qssl.h -> curl_qssl.h
        renamed:    rawstr.h -> curl_rawstr.h
        renamed:    rtsp.h -> curl_rtsp.h
        renamed:    select.h -> curl_select.h
        renamed:    sendf.h -> curl_sendf.h
        renamed:    setup.h -> curl_setup.h
        renamed:    setup_once.h -> curl_setup_once.h
        renamed:    share.h -> curl_share.h
        renamed:    slist.h -> curl_slist.h
        renamed:    smtp.h -> curl_smtp.h
        renamed:    sockaddr.h -> curl_sockaddr.h
        renamed:    socks.h -> curl_socks.h
        renamed:    speedcheck.h -> curl_speedcheck.h
        renamed:    splay.h -> curl_splay.h
        renamed:    ssh.h -> curl_ssh.h
        renamed:    sslgen.h -> curl_sslgen.h
        renamed:    ssluse.h -> curl_ssluse.h
        renamed:    strdup.h -> curl_strdup.h
        renamed:    strequal.h -> curl_strequal.h
        renamed:    strerror.h -> curl_strerror.h
        renamed:    strtok.h -> curl_strtok.h
        renamed:    strtoofft.h -> curl_strtoofft.h
        renamed:    telnet.h -> curl_telnet.h
        renamed:    tftp.h -> curl_tftp.h
        renamed:    timeval.h -> curl_timeval.h
        renamed:    transfer.h -> curl_transfer.h
        renamed:    url.h -> curl_url.h
        renamed:    urldata.h -> curl_urldata.h
        renamed:    warnless.h -> curl_warnless.h
        renamed:    wildcard.h -> curl_wildcard.h
      
      ----------------------------------------
      ffd8e127
    • Yang Tse's avatar
      build: make use of 76 lib/*.h renamed files · f871de00
      Yang Tse authored
      76 private header files renamed to use our standard naming scheme.
      
      This change affects 322 files in libcurl's source tree.
      f871de00
  9. Jun 26, 2012
  10. Jan 18, 2012
  11. Sep 30, 2011
  12. Sep 28, 2011
  13. Sep 03, 2011
  14. Apr 05, 2011
    • Daniel Stenberg's avatar
      return code cleanup: build, init and run-time errors · 01f05d0c
      Daniel Stenberg authored
      Stop the abuse of CURLE_FAILED_INIT as return code for things not being
      init related by introducing two new return codes:
      
      CURLE_NOT_BUILT_IN and CURLE_UNKNOWN_OPTION
      
      CURLE_NOT_BUILT_IN replaces return code 4 that has been obsoleted for
      several years. It is used for returning error when something is
      attempted to be used but the feature/option was not enabled or
      explictitly disabled at build-time. Getting this error mostly means that
      libcurl needs to be rebuilt.
      
      CURLE_FAILED_INIT is now saved and used strictly for init
      failures. Getting this problem means something went seriously wrong,
      like a resource shortage or similar.
      
      CURLE_UNKNOWN_OPTION is the option formerly known as
      CURLE_UNKNOWN_TELNET_OPTION (and the old name is still present,
      separately defined to be removed in a very distant future). This error
      code is meant to be used to return when an option is given to libcurl
      that isn't known. This problem would mostly indicate a problem in the
      program that uses libcurl.
      01f05d0c
  15. Mar 14, 2011
  16. May 07, 2010
    • Howard Chu's avatar
      sendrecv: split the I/O handling into private handler · d64bd82b
      Howard Chu authored
      Howard Chu brought the bulk work of this patch that properly
      moves out the sending and recving of data to the parts of the
      code that are properly responsible for the various ways of doing
      so.
      
      Daniel Stenberg assisted with polishing a few bits and fixed some
      minor flaws in the original patch.
      
      Another upside of this patch is that we now abuse CURLcodes less
      with the "magic" -1 return codes and instead use CURLE_AGAIN more
      consistently.
      d64bd82b
  17. Apr 05, 2010
  18. Apr 04, 2010
  19. Mar 24, 2010
  20. May 04, 2009
  21. Nov 11, 2008
    • Daniel Stenberg's avatar
      - Rainer Canavan filed bug #2255627 · 4cbc0f6c
      Daniel Stenberg authored
        (http://curl.haxx.se/bug/view.cgi?id=2255627) which pointed out that a
        program using libcurl's multi interface to download a HTTPS page with a
        libcurl built powered by OpenSSL, would easily get silly and instead hand
        over SSL details as data instead of the actual HTTP headers and body. This
        happened because libcurl would consider the connection handshake done too
        early. This problem was introduced at September 22nd 2008 with my fix of the
        bug #2107377
      
        The correct fix is now instead done within the GnuTLS-handling code, as both
        the OpenSSL and the NSS code already deal with this situation in similar
        fashion. I added test case 560 in an attempt to verify this fix, but
        unfortunately it didn't trigger it even before this fix!
      4cbc0f6c
  22. Oct 20, 2008
  23. Sep 05, 2008
    • Daniel Stenberg's avatar
      - Introducing CURLOPT_CERTINFO and the corresponding CURLINFO_CERTINFO. By · 4c976856
      Daniel Stenberg authored
        enabling this feature with CURLOPT_CERTINFO for a request using SSL (HTTPS
        or FTPS), libcurl will gather lots of server certificate info and that info
        can then get extracted by a client after the request has completed with
        curl_easy_getinfo()'s CURLINFO_CERTINFO option. Linus Nielsen Feltzing
        helped me test and smoothen out this feature.
      
        Unfortunately, this feature currently only works with libcurl built to use
        OpenSSL.
      
        This feature was sponsored by networking4all.com - thanks!
      4c976856
  24. Jul 05, 2008
  25. Jun 11, 2008
    • Daniel Stenberg's avatar
      - I did a cleanup of the internal generic SSL layer and how the various SSL · 04d5c8fb
      Daniel Stenberg authored
        libraries are supported. Starting now, each underlying SSL library support
        code does a set of defines for the 16 functions the generic layer (sslgen.c)
        uses (all these new function defines use the prefix "curlssl_"). This
        greatly simplified the generic layer in readability by involving much less
        #ifdefs and other preprocessor stuff and should make it easier for people to
        make libcurl work with new SSL libraries.
      
        Hopefully I can later on document these 16 functions somewhat as well.
      
        I also made most of the internal SSL-dependent functions (using Curl_ssl_
        prefix) #defined to nothing when no SSL support is requested - previously
        they would unnecessarily call mostly empty functions.
      04d5c8fb
  26. May 09, 2008
  27. Aug 27, 2007
  28. Jul 29, 2007
  29. Jan 25, 2007
  30. Jan 24, 2007
  31. Jan 05, 2007
  32. Nov 11, 2006
  33. Oct 27, 2006
  34. May 10, 2006
  35. Mar 21, 2006
  36. Apr 07, 2005
    • Daniel Stenberg's avatar
      GnuTLS support added. There's now a "generic" SSL layer that we use all over · 6e619393
      Daniel Stenberg authored
      internally, with code provided by sslgen.c. All SSL-layer-specific code is
      then written in ssluse.c (for OpenSSL) and gtls.c (for GnuTLS).
      
      As far as possible, internals should not need to know what SSL layer that is
      in use. Building with GnuTLS currently makes two test cases fail.
      
      TODO.gnutls contains a few known outstanding issues for the GnuTLS support.
      
      GnuTLS support is enabled with configure --with-gnutls
      6e619393
Loading