Skip to content
  1. Mar 20, 2015
  2. Mar 19, 2015
  3. Mar 18, 2015
  4. Mar 17, 2015
  5. Mar 16, 2015
  6. Mar 15, 2015
  7. Mar 14, 2015
    • Tobias Stoeckmann's avatar
      hostip: Fix signal race in Curl_resolv_timeout. · 851c2926
      Tobias Stoeckmann authored
      A signal handler for SIGALRM is installed in Curl_resolv_timeout. It is
      configured to interrupt system calls and uses siglongjmp to return into
      the function if alarm() goes off.
      
      The signal handler is installed before curl_jmpenv is initialized.
      This means that an already installed alarm timer could trigger the
      newly installed signal handler, leading to undefined behavior when it
      accesses the uninitialized curl_jmpenv.
      
      Even if there is no previously installed alarm available, the code in
      Curl_resolv_timeout itself installs an alarm before the environment is
      fully set up. If the process is sent into suspend right after that, the
      signal handler could be called too early as in previous scenario.
      
      To fix this, the signal handler should only be installed and the alarm
      timer only be set after sigsetjmp has been called.
      851c2926