





<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
  <link rel="dns-prefetch" href="https://assets-cdn.github.com">
  <link rel="dns-prefetch" href="https://avatars0.githubusercontent.com">
  <link rel="dns-prefetch" href="https://avatars1.githubusercontent.com">
  <link rel="dns-prefetch" href="https://avatars2.githubusercontent.com">
  <link rel="dns-prefetch" href="https://avatars3.githubusercontent.com">
  <link rel="dns-prefetch" href="https://github-cloud.s3.amazonaws.com">
  <link rel="dns-prefetch" href="https://user-images.githubusercontent.com/">



  <link crossorigin="anonymous" media="all" integrity="sha512-hqbuBb0QOOmiWgl8a1V1N5q6TI/G0A2hVt/lCFYafR+fYsuXeRUcsdcb/yUyVEHYXktmUXl0Mx9s/BOUNZVq4w==" rel="stylesheet" href="https://assets-cdn.github.com/assets/frameworks-23c9e7262eee71bc6f67f6950190a162.css" />
  <link crossorigin="anonymous" media="all" integrity="sha512-eIYYJSKqUtZ1wca1cjvRpEFVDVFlRed6ZF1jtZ0E+plPCBYpZd78jUtSlGbFFouH9uhlhGRztTLDLwmNU6rL8w==" rel="stylesheet" href="https://assets-cdn.github.com/assets/github-50c729cf7e55c7554c6d0ceae2a0e938.css" />
  
  
  <link crossorigin="anonymous" media="all" integrity="sha512-cCY9KKeDzfGd+snVDZwcOIrTjK+JAFW4FR1c4OGJo1Z2QZNbAGVD6JlcnHL19LBcdByWHVxwrAPwigT/v/DWyQ==" rel="stylesheet" href="https://assets-cdn.github.com/assets/site-7472e7b4603d4095447d49d428375ab8.css" />
  

  <meta name="viewport" content="width=device-width">
  
  <title>Add missing libarchive flags, some security tests · mingwandroid/python-libarchive-c@4784e43 · GitHub</title>
    <meta name="description" content="GitHub is where people build software. More than 27 million people use GitHub to discover, fork, and contribute to over 80 million projects.">
    <link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="GitHub">
  <link rel="fluid-icon" href="https://github.com/fluidicon.png" title="GitHub">
  <meta property="fb:app_id" content="1401488693436528">

    
    <meta property="og:image" content="https://camo.githubusercontent.com/df52b6467bdc919a0a5b077349ab31b8e208c9a3/68747470733a2f2f302e67726176617461722e636f6d2f6176617461722f64613364336235633866386463336138386263346164373363616562383863653f643d68747470732533412532462532466173736574732d63646e2e6769746875622e636f6d253246696d6167657325324667726176617461727325324667726176617461722d757365722d3432302e706e6726723d6726733d323030" /><meta property="og:site_name" content="GitHub" /><meta property="og:type" content="object" /><meta property="og:title" content="Add missing libarchive flags, some security tests · mingwandroid/python-libarchive-c@4784e43" /><meta property="og:url" content="https://github.com/mingwandroid/python-libarchive-c/commit/4784e43a9ca7835cdfbceba718a527e1f8033447" /><meta property="og:description" content="* Add missing flags supported by libarchive:
    - EXTRACT_SECURE_NOABSOLUTEPATHS;
    - EXTRACT_CLEAR_NOCHANGE_FFLAGS;

* Add some tests for security options:
    - EXTRACT_SECURE_NODOTDOT;
    - ..." /><meta property="og:updated_time" content="1494764734" />

  <link rel="assets" href="https://assets-cdn.github.com/">
  
  <meta name="pjax-timeout" content="1000">
  
  <meta name="request-id" content="D845:4519:4406E68:787581B:5B0C9381" data-pjax-transient>


  

  <meta name="selected-link" value="repo_commits" data-pjax-transient>

    <meta name="google-site-verification" content="KT5gs8h0wvaagLKAVWq8bbeNwnZZK1r1XQysX3xurLU">
  <meta name="google-site-verification" content="ZzhVyEFwb7w3e0-uOTltm8Jsck2F5StVihD0exw2fsA">
  <meta name="google-site-verification" content="GXs5KoUUkNCoaAZn7wPN-t01Pywp9M3sEjnt_3_ZWPc">
    <meta name="google-analytics" content="UA-3769691-2">

<meta name="octolytics-host" content="collector.githubapp.com" /><meta name="octolytics-app-id" content="github" /><meta name="octolytics-event-url" content="https://collector.githubapp.com/github-external/browser_event" /><meta name="octolytics-dimension-request_id" content="D845:4519:4406E68:787581B:5B0C9381" /><meta name="octolytics-dimension-region_edge" content="iad" /><meta name="octolytics-dimension-region_render" content="iad" />
<meta name="analytics-location" content="/&lt;user-name&gt;/&lt;repo-name&gt;/commit/show" data-pjax-transient="true" />




  <meta class="js-ga-set" name="dimension1" content="Logged Out">


  

      <meta name="hostname" content="github.com">
    <meta name="user-login" content="">

      <meta name="expected-hostname" content="github.com">
    <meta name="js-proxy-site-detection-payload" content="OWIwODJiOTU0MzU1YzIwMzNlNzc2MTllOGM1MzYwN2Q3N2Y2OTQ2MGE0NTMzNWEwYmUwZGNkYjVlN2Q5NWNlOHx7InJlbW90ZV9hZGRyZXNzIjoiODIuMjUuMTQzLjEyOSIsInJlcXVlc3RfaWQiOiJEODQ1OjQ1MTk6NDQwNkU2ODo3ODc1ODFCOjVCMEM5MzgxIiwidGltZXN0YW1wIjoxNTI3NTUwODUwLCJob3N0IjoiZ2l0aHViLmNvbSJ9">

    <meta name="enabled-features" content="UNIVERSE_BANNER,FREE_TRIALS,MARKETPLACE_INSIGHTS,MARKETPLACE_INSIGHTS_CONVERSION_PERCENTAGES,JUMP_TO">

  <meta name="html-safe-nonce" content="1e02e5dc6e5a4120081b94e4945805650e862748">

  <meta http-equiv="x-pjax-version" content="cb731f9d27da2ae3c5aaf1474ffe5d0a">
  

      <link href="/mingwandroid/python-libarchive-c/commit/4784e43a9ca7835cdfbceba718a527e1f8033447.diff" rel="alternate" type="text/plain+diff" data-pjax-transient="true" />
  <link href="/mingwandroid/python-libarchive-c/commit/4784e43a9ca7835cdfbceba718a527e1f8033447.patch" rel="alternate" type="text/plain+patch" data-pjax-transient="true" />

  <meta name="diff-view" content="unified" data-pjax-transient>
  <link href="https://github.com/mingwandroid/python-libarchive-c/commits/4784e43a9ca7835cdfbceba718a527e1f8033447.atom" rel="alternate" title="Recent Commits to python-libarchive-c:4784e43a9ca7835cdfbceba718a527e1f8033447" type="application/atom+xml">

  <meta name="description" content="python-libarchive-c - Python interface to libarchive">
  <meta name="go-import" content="github.com/mingwandroid/python-libarchive-c git https://github.com/mingwandroid/python-libarchive-c.git">

  <meta name="octolytics-dimension-user_id" content="1042804" /><meta name="octolytics-dimension-user_login" content="mingwandroid" /><meta name="octolytics-dimension-repository_id" content="135218665" /><meta name="octolytics-dimension-repository_nwo" content="mingwandroid/python-libarchive-c" /><meta name="octolytics-dimension-repository_public" content="true" /><meta name="octolytics-dimension-repository_is_fork" content="true" /><meta name="octolytics-dimension-repository_parent_id" content="22785341" /><meta name="octolytics-dimension-repository_parent_nwo" content="Changaco/python-libarchive-c" /><meta name="octolytics-dimension-repository_network_root_id" content="22785341" /><meta name="octolytics-dimension-repository_network_root_nwo" content="Changaco/python-libarchive-c" /><meta name="octolytics-dimension-repository_explore_github_marketplace_ci_cta_shown" content="false" />




  <meta name="browser-stats-url" content="https://api.github.com/_private/browser/stats">

  <meta name="browser-errors-url" content="https://api.github.com/_private/browser/errors">

  <link rel="mask-icon" href="https://assets-cdn.github.com/pinned-octocat.svg" color="#000000">
  <link rel="icon" type="image/x-icon" class="js-site-favicon" href="https://assets-cdn.github.com/favicon.ico">

<meta name="theme-color" content="#1e2327">



<link rel="manifest" href="/manifest.json" crossOrigin="use-credentials">

  </head>

  <body class="logged-out env-production">
    

  <div class="position-relative js-header-wrapper ">
    <a href="#start-of-content" tabindex="1" class="px-2 py-4 bg-blue text-white show-on-focus js-skip-to-content">Skip to content</a>
    <div id="js-pjax-loader-bar" class="pjax-loader-bar"><div class="progress"></div></div>

    
    
    



        <header class="Header header-logged-out  position-relative f4 py-3" role="banner">
  <div class="container-lg d-flex px-3">
    <div class="d-flex flex-justify-between flex-items-center">
      <a class="header-logo-invertocat my-0" href="https://github.com/" aria-label="Homepage" data-ga-click="(Logged out) Header, go to homepage, icon:logo-wordmark">
        <svg height="32" class="octicon octicon-mark-github" viewBox="0 0 16 16" version="1.1" width="32" aria-hidden="true"><path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0 0 16 8c0-4.42-3.58-8-8-8z"/></svg>
      </a>

    </div>

    <div class="HeaderMenu HeaderMenu--bright d-flex flex-justify-between flex-auto">
        <nav class="mt-0">
          <ul class="d-flex list-style-none">
              <li class="ml-2">
                <a class="js-selected-navigation-item HeaderNavlink px-0 py-2 m-0" data-ga-click="Header, click, Nav menu - item:features" data-selected-links="/features /features/project-management /features/code-review /features/project-management /features/integrations /features" href="/features">
                  Features
</a>              </li>
              <li class="ml-4">
                <a class="js-selected-navigation-item HeaderNavlink px-0 py-2 m-0" data-ga-click="Header, click, Nav menu - item:business" data-selected-links="/business /business/security /business/customers /business" href="/business">
                  Business
</a>              </li>

              <li class="ml-4">
                <a class="js-selected-navigation-item HeaderNavlink px-0 py-2 m-0" data-ga-click="Header, click, Nav menu - item:explore" data-selected-links="/explore /trending /trending/developers /integrations /integrations/feature/code /integrations/feature/collaborate /integrations/feature/ship showcases showcases_search showcases_landing /explore" href="/explore">
                  Explore
</a>              </li>

              <li class="ml-4">
                    <a class="js-selected-navigation-item HeaderNavlink px-0 py-2 m-0" data-ga-click="Header, click, Nav menu - item:marketplace" data-selected-links=" /marketplace" href="/marketplace">
                      Marketplace
</a>              </li>
              <li class="ml-4">
                <a class="js-selected-navigation-item HeaderNavlink px-0 py-2 m-0" data-ga-click="Header, click, Nav menu - item:pricing" data-selected-links="/pricing /pricing/developer /pricing/team /pricing/business-hosted /pricing/business-enterprise /pricing" href="/pricing">
                  Pricing
</a>              </li>
          </ul>
        </nav>

      <div class="d-flex">
          <div class="d-lg-flex flex-items-center mr-3">
            <div class="header-search scoped-search site-scoped-search js-site-search position-relative" role="search">
  <div class="position-relative">
    <!-- '"` --><!-- </textarea></xmp> --></option></form><form class="js-site-search-form" data-scope-type="Repository" data-scope-id="135218665" data-scoped-search-url="/mingwandroid/python-libarchive-c/search" data-unscoped-search-url="/search" action="/mingwandroid/python-libarchive-c/search" accept-charset="UTF-8" method="get"><input name="utf8" type="hidden" value="&#x2713;" />
      <label class="form-control header-search-wrapper  js-chromeless-input-container">
            <a class="header-search-scope no-underline" href="/mingwandroid/python-libarchive-c/commit/4784e43a9ca7835cdfbceba718a527e1f8033447">This repository</a>
        <input type="text"
          class="form-control header-search-input  js-site-search-focus js-site-search-field is-clearable"
          data-hotkey="s,/"
          name="q"
          value=""
          placeholder="Search"
          aria-label="Search this repository"
          data-unscoped-placeholder="Search GitHub"
          data-scoped-placeholder="Search"
          autocapitalize="off"
          >
          <input type="hidden" class="js-site-search-type-field" name="type" >
      </label>
</form>  </div>
</div>

          </div>

        <span class="d-inline-block">
            <div class="HeaderNavlink px-0 py-2 m-0">
              <a class="text-bold text-white no-underline" href="/login?return_to=%2Fmingwandroid%2Fpython-libarchive-c%2Fcommit%2F4784e43a9ca7835cdfbceba718a527e1f8033447" data-ga-click="(Logged out) Header, clicked Sign in, text:sign-in">Sign in</a>
                <span class="text-gray">or</span>
                <a class="text-bold text-white no-underline" href="/join?source=header-repo" data-ga-click="(Logged out) Header, clicked Sign up, text:sign-up">Sign up</a>
            </div>
        </span>
      </div>
    </div>
  </div>
</header>

  </div>

  <div id="start-of-content" class="show-on-focus"></div>

    <div id="js-flash-container">
</div>



  <div role="main" class="application-main ">
        <div itemscope itemtype="http://schema.org/SoftwareSourceCode" class="">
    <div id="js-repo-pjax-container" data-pjax-container >
      






  <div class="pagehead repohead instapaper_ignore readability-menu experiment-repo-nav  ">
    <div class="repohead-details-container clearfix container">

      <ul class="pagehead-actions">
  <li>
      <a href="/login?return_to=%2Fmingwandroid%2Fpython-libarchive-c"
    class="btn btn-sm btn-with-count tooltipped tooltipped-n"
    aria-label="You must be signed in to watch a repository" rel="nofollow">
    <svg class="octicon octicon-eye" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8.06 2C3 2 0 8 0 8s3 6 8.06 6C13 14 16 8 16 8s-3-6-7.94-6zM8 12c-2.2 0-4-1.78-4-4 0-2.2 1.8-4 4-4 2.22 0 4 1.8 4 4 0 2.22-1.78 4-4 4zm2-4c0 1.11-.89 2-2 2-1.11 0-2-.89-2-2 0-1.11.89-2 2-2 1.11 0 2 .89 2 2z"/></svg>
    Watch
  </a>
  <a class="social-count" href="/mingwandroid/python-libarchive-c/watchers"
     aria-label="1 user is watching this repository">
    1
  </a>

  </li>

  <li>
      <a href="/login?return_to=%2Fmingwandroid%2Fpython-libarchive-c"
    class="btn btn-sm btn-with-count tooltipped tooltipped-n"
    aria-label="You must be signed in to star a repository" rel="nofollow">
    <svg class="octicon octicon-star" viewBox="0 0 14 16" version="1.1" width="14" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M14 6l-4.9-.64L7 1 4.9 5.36 0 6l3.6 3.26L2.67 14 7 11.67 11.33 14l-.93-4.74L14 6z"/></svg>
    Star
  </a>

    <a class="social-count js-social-count" href="/mingwandroid/python-libarchive-c/stargazers"
      aria-label="0 users starred this repository">
      0
    </a>

  </li>

  <li>
      <a href="/login?return_to=%2Fmingwandroid%2Fpython-libarchive-c"
        class="btn btn-sm btn-with-count tooltipped tooltipped-n"
        aria-label="You must be signed in to fork a repository" rel="nofollow">
        <svg class="octicon octicon-repo-forked" viewBox="0 0 10 16" version="1.1" width="10" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8 1a1.993 1.993 0 0 0-1 3.72V6L5 8 3 6V4.72A1.993 1.993 0 0 0 2 1a1.993 1.993 0 0 0-1 3.72V6.5l3 3v1.78A1.993 1.993 0 0 0 5 15a1.993 1.993 0 0 0 1-3.72V9.5l3-3V4.72A1.993 1.993 0 0 0 8 1zM2 4.2C1.34 4.2.8 3.65.8 3c0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2zm3 10c-.66 0-1.2-.55-1.2-1.2 0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2zm3-10c-.66 0-1.2-.55-1.2-1.2 0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2z"/></svg>
        Fork
      </a>

    <a href="/mingwandroid/python-libarchive-c/network" class="social-count"
       aria-label="19 users forked this repository">
      19
    </a>
  </li>
</ul>

      <h1 class="public ">
  <svg class="octicon octicon-repo-forked" viewBox="0 0 10 16" version="1.1" width="10" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8 1a1.993 1.993 0 0 0-1 3.72V6L5 8 3 6V4.72A1.993 1.993 0 0 0 2 1a1.993 1.993 0 0 0-1 3.72V6.5l3 3v1.78A1.993 1.993 0 0 0 5 15a1.993 1.993 0 0 0 1-3.72V9.5l3-3V4.72A1.993 1.993 0 0 0 8 1zM2 4.2C1.34 4.2.8 3.65.8 3c0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2zm3 10c-.66 0-1.2-.55-1.2-1.2 0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2zm3-10c-.66 0-1.2-.55-1.2-1.2 0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2z"/></svg>
  <span class="author" itemprop="author"><a class="url fn" rel="author" href="/mingwandroid">mingwandroid</a></span><!--
--><span class="path-divider">/</span><!--
--><strong itemprop="name"><a data-pjax="#js-repo-pjax-container" href="/mingwandroid/python-libarchive-c">python-libarchive-c</a></strong>

    <span class="fork-flag">
      <span class="text">forked from <a href="/Changaco/python-libarchive-c">Changaco/python-libarchive-c</a></span>
    </span>
</h1>

    </div>
    
<nav class="reponav js-repo-nav js-sidenav-container-pjax container"
     itemscope
     itemtype="http://schema.org/BreadcrumbList"
     role="navigation"
     data-pjax="#js-repo-pjax-container">

  <span itemscope itemtype="http://schema.org/ListItem" itemprop="itemListElement">
    <a class="js-selected-navigation-item selected reponav-item" itemprop="url" data-hotkey="g c" data-selected-links="repo_source repo_downloads repo_commits repo_releases repo_tags repo_branches repo_packages /mingwandroid/python-libarchive-c" href="/mingwandroid/python-libarchive-c">
      <svg class="octicon octicon-code" viewBox="0 0 14 16" version="1.1" width="14" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M9.5 3L8 4.5 11.5 8 8 11.5 9.5 13 14 8 9.5 3zm-5 0L0 8l4.5 5L6 11.5 2.5 8 6 4.5 4.5 3z"/></svg>
      <span itemprop="name">Code</span>
      <meta itemprop="position" content="1">
</a>  </span>


  <span itemscope itemtype="http://schema.org/ListItem" itemprop="itemListElement">
    <a data-hotkey="g p" itemprop="url" class="js-selected-navigation-item reponav-item" data-selected-links="repo_pulls checks /mingwandroid/python-libarchive-c/pulls" href="/mingwandroid/python-libarchive-c/pulls">
      <svg class="octicon octicon-git-pull-request" viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M11 11.28V5c-.03-.78-.34-1.47-.94-2.06C9.46 2.35 8.78 2.03 8 2H7V0L4 3l3 3V4h1c.27.02.48.11.69.31.21.2.3.42.31.69v6.28A1.993 1.993 0 0 0 10 15a1.993 1.993 0 0 0 1-3.72zm-1 2.92c-.66 0-1.2-.55-1.2-1.2 0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2zM4 3c0-1.11-.89-2-2-2a1.993 1.993 0 0 0-1 3.72v6.56A1.993 1.993 0 0 0 2 15a1.993 1.993 0 0 0 1-3.72V4.72c.59-.34 1-.98 1-1.72zm-.8 10c0 .66-.55 1.2-1.2 1.2-.65 0-1.2-.55-1.2-1.2 0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2zM2 4.2C1.34 4.2.8 3.65.8 3c0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2z"/></svg>
      <span itemprop="name">Pull requests</span>
      <span class="Counter">0</span>
      <meta itemprop="position" content="3">
</a>  </span>

    <a data-hotkey="g b" class="js-selected-navigation-item reponav-item" data-selected-links="repo_projects new_repo_project repo_project /mingwandroid/python-libarchive-c/projects" href="/mingwandroid/python-libarchive-c/projects">
      <svg class="octicon octicon-project" viewBox="0 0 15 16" version="1.1" width="15" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M10 12h3V2h-3v10zm-4-2h3V2H6v8zm-4 4h3V2H2v12zm-1 1h13V1H1v14zM14 0H1a1 1 0 0 0-1 1v14a1 1 0 0 0 1 1h13a1 1 0 0 0 1-1V1a1 1 0 0 0-1-1z"/></svg>
      Projects
      <span class="Counter" >0</span>
</a>


  <a class="js-selected-navigation-item reponav-item" data-selected-links="repo_graphs repo_contributors dependency_graph pulse /mingwandroid/python-libarchive-c/pulse" href="/mingwandroid/python-libarchive-c/pulse">
    <svg class="octicon octicon-graph" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M16 14v1H0V0h1v14h15zM5 13H3V8h2v5zm4 0H7V3h2v10zm4 0h-2V6h2v7z"/></svg>
    Insights
</a>

</nav>


  </div>

<div class="container new-discussion-timeline experiment-repo-nav  ">
  <div class="repository-content ">

    
  <a href="/mingwandroid/python-libarchive-c/commit/4784e43a9ca7835cdfbceba718a527e1f8033447" class="d-none js-permalink-shortcut" data-hotkey="y">Permalink</a>


  

  
<div class="commit full-commit px-2 pt-2 ">
  <a href="/mingwandroid/python-libarchive-c/tree/4784e43a9ca7835cdfbceba718a527e1f8033447" class="btn btn-outline float-right" title="Browse the repository at this point in the history" rel="nofollow">Browse files</a>

    <p class="commit-title">
      Add missing libarchive flags, some security tests
    </p>

    <div class="commit-desc"><pre>* Add missing flags supported by libarchive:
    - EXTRACT_SECURE_NOABSOLUTEPATHS;
    - EXTRACT_CLEAR_NOCHANGE_FFLAGS;

* Add some tests for security options:
    - EXTRACT_SECURE_NODOTDOT;
    - EXTRACT_SECURE_NOABSOLUTEPATHS.</pre></div>

  <div class="commit-branches">
  <include-fragment src="/mingwandroid/python-libarchive-c/branch_commits/4784e43a9ca7835cdfbceba718a527e1f8033447">
    <svg class="octicon octicon-git-branch" viewBox="0 0 10 16" version="1.1" width="10" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M10 5c0-1.11-.89-2-2-2a1.993 1.993 0 0 0-1 3.72v.3c-.02.52-.23.98-.63 1.38-.4.4-.86.61-1.38.63-.83.02-1.48.16-2 .45V4.72a1.993 1.993 0 0 0-1-3.72C.88 1 0 1.89 0 3a2 2 0 0 0 1 1.72v6.56c-.59.35-1 .99-1 1.72 0 1.11.89 2 2 2 1.11 0 2-.89 2-2 0-.53-.2-1-.53-1.36.09-.06.48-.41.59-.47.25-.11.56-.17.94-.17 1.05-.05 1.95-.45 2.75-1.25S8.95 7.77 9 6.73h-.02C9.59 6.37 10 5.73 10 5zM2 1.8c.66 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2C1.35 4.2.8 3.65.8 3c0-.65.55-1.2 1.2-1.2zm0 12.41c-.66 0-1.2-.55-1.2-1.2 0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2zm6-8c-.66 0-1.2-.55-1.2-1.2 0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2z"/></svg>
    <ul class="branches-list">
      <li class="loading">Loading branch information<span class="animated-ellipsis-container"><span class="animated-ellipsis">...</span></span></li>
    </ul>
</include-fragment></div>


  <div class="commit-meta clearfix p-2 no-wrap d-flex flex-items-center">
    
<div class="AvatarStack flex-self-start ">
  <div class="AvatarStack-body" aria-label="Kirill Isakov">

        <img src="https://camo.githubusercontent.com/14fd4459e2e23738a94716aac41a04a3fd5de480/68747470733a2f2f302e67726176617461722e636f6d2f6176617461722f64613364336235633866386463336138386263346164373363616562383863653f643d68747470732533412532462532466173736574732d63646e2e6769746875622e636f6d253246696d6167657325324667726176617461727325324667726176617461722d757365722d3432302e706e6726723d6726733d3430" width="20" height="20" class="avatar" alt="Kirill Isakov">
  </div>
</div>

    <div class="flex-auto">
      
        <span class="commit-author user-mention">Kirill Isakov</span>


  committed
  <relative-time datetime="2017-05-14T10:14:09Z">May 14, 2017</relative-time>

      

    </div>
    <div>
      <span class="sha-block" data-pjax>
        1 parent
          
          <a class="sha" data-hotkey="p" href="/mingwandroid/python-libarchive-c/commit/d1cd553e80809336dcec281dade20400721442de">d1cd553</a>
      </span>
      <span class="sha-block">commit <span class="sha user-select-contain">4784e43a9ca7835cdfbceba718a527e1f8033447</span></span>
    </div>
  </div>
</div>




      <a name="diff-stat"></a>
      <div id="toc" class="details-collapse table-of-contents js-details-container Details">
  <div class="BtnGroup float-right" data-ga-load="Diff, view, Viewed Unified Diff">
  <a class="btn btn-sm selected BtnGroup-item" href="https://github.com/mingwandroid/python-libarchive-c/commit/4784e43a9ca7835cdfbceba718a527e1f8033447?diff=unified">
    Unified
  </a>
  <a class="btn btn-sm BtnGroup-item" href="https://github.com/mingwandroid/python-libarchive-c/commit/4784e43a9ca7835cdfbceba718a527e1f8033447?diff=split">
    Split
  </a>
</div>


  <div class="toc-diff-stats">
    <svg class="octicon octicon-diff" viewBox="0 0 13 16" version="1.1" width="13" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M6 7h2v1H6v2H5V8H3V7h2V5h1v2zm-3 6h5v-1H3v1zM7.5 2L11 5.5V15c0 .55-.45 1-1 1H1c-.55 0-1-.45-1-1V3c0-.55.45-1 1-1h6.5zM10 6L7 3H1v12h9V6zM8.5 0H3v1h5l4 4v8h1V4.5L8.5 0z"/></svg>
    Showing
    <button type="button" class="btn-link js-details-target" aria-expanded="false">
      3 changed files
    </button>
    with
    <strong>34 additions</strong>
    and <strong>0 deletions</strong>.
  </div>

  <ol class="content collapse js-transitionable">
    <li>
      <span class="diffstat float-right">
          <span class="text-green">
            +2
          </span>
          <span class="text-red">
            −0
          </span>
          <a href="#diff-bc815de73d23609d13958b097c129d61" class="tooltipped tooltipped-s" aria-label="2 lines changed">
            <span class="block-diff-added"></span><span class="block-diff-added"></span><span class="block-diff-neutral"></span><span class="block-diff-neutral"></span><span class="block-diff-neutral"></span>
          </a>
      </span>
      <svg title="modified" class="octicon octicon-diff-modified" viewBox="0 0 14 16" version="1.1" width="14" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M13 1H1c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1h12c.55 0 1-.45 1-1V2c0-.55-.45-1-1-1zm0 13H1V2h12v12zM4 8c0-1.66 1.34-3 3-3s3 1.34 3 3-1.34 3-3 3-3-1.34-3-3z"/></svg>
      <a href="#diff-bc815de73d23609d13958b097c129d61">libarchive/extract.py</a>
    </li>
    <li>
      <span class="diffstat float-right">
          <a href="#diff-9a185a8257238f9f9f33a181d0fc66fd" class="tooltipped tooltipped-w" aria-label="Binary file added">
            BIN
            <span class="text-green">
              <span class="block-diff-neutral"></span><span class="block-diff-neutral"></span><span class="block-diff-neutral"></span><span class="block-diff-neutral"></span><span class="block-diff-neutral"></span>
            </span>
          </a>
      </span>
      <svg title="added" class="octicon octicon-diff-added" viewBox="0 0 14 16" version="1.1" width="14" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M13 1H1c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1h12c.55 0 1-.45 1-1V2c0-.55-.45-1-1-1zm0 13H1V2h12v12zM6 9H3V7h3V4h2v3h3v2H8v3H6V9z"/></svg>
      <a href="#diff-9a185a8257238f9f9f33a181d0fc66fd">tests/data/flags.tar</a>
    </li>
    <li>
      <span class="diffstat float-right">
          <span class="text-green">
            +32
          </span>
          <span class="text-red">
            −0
          </span>
          <a href="#diff-0d3893ca6f89d4c690cb11e2bb970ba3" class="tooltipped tooltipped-s" aria-label="32 lines changed">
            <span class="block-diff-added"></span><span class="block-diff-added"></span><span class="block-diff-added"></span><span class="block-diff-added"></span><span class="block-diff-added"></span>
          </a>
      </span>
      <svg title="added" class="octicon octicon-diff-added" viewBox="0 0 14 16" version="1.1" width="14" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M13 1H1c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1h12c.55 0 1-.45 1-1V2c0-.55-.45-1-1-1zm0 13H1V2h12v12zM6 9H3V7h3V4h2v3h3v2H8v3H6V9z"/></svg>
      <a href="#diff-0d3893ca6f89d4c690cb11e2bb970ba3">tests/test_security_flags.py</a>
    </li>
  </ol>
</div>

    <div id="files" class="diff-view ">

  <div class="js-diff-progressive-container">
    
<a name="diff-bc815de73d23609d13958b097c129d61"></a>
<div id="diff-0"
     class="file js-file js-details-container Details
             
             
             
             
             
              show-inline-notes
           ">
  <div class="file-header js-file-header" data-path="libarchive/extract.py" data-short-path="bc815de" data-anchor="diff-bc815de73d23609d13958b097c129d61">
    <div class="file-actions">

        <span class="show-file-notes pt-1">
          <label>
            <input type="checkbox" checked="checked" class="js-toggle-file-notes">
            Show comments
          </label>
        </span>

          <a href="/mingwandroid/python-libarchive-c/blob/4784e43a9ca7835cdfbceba718a527e1f8033447/libarchive/extract.py" class="btn btn-sm tooltipped tooltipped-nw" rel="nofollow" aria-label="View the whole file at version 4784e43 ">View</a>


      <button type="button" class="btn-octicon p-1 pr-2 js-details-target" aria-label="Toggle diff text" aria-expanded="true">
        <svg class="octicon octicon-chevron-down Details-content--shown" viewBox="0 0 10 16" version="1.1" width="10" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M5 11L0 6l1.5-1.5L5 8.25 8.5 4.5 10 6l-5 5z"/></svg>
        <svg class="octicon octicon-chevron-up Details-content--hidden" viewBox="0 0 10 16" version="1.1" width="10" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M10 10l-1.5 1.5L5 7.75 1.5 11.5 0 10l5-5 5 5z"/></svg>
      </button>
    </div>
    <div class="file-info">
        <span class="diffstat tooltipped tooltipped-e" aria-label="2 additions &amp; 0 deletions">2 <span class="block-diff-added"></span><span class="block-diff-added"></span><span class="block-diff-neutral"></span><span class="block-diff-neutral"></span><span class="block-diff-neutral"></span></span>

      <a href="#diff-bc815de73d23609d13958b097c129d61" class="link-gray-dark"
         title="libarchive/extract.py">libarchive/extract.py</a>

      
    </div>
  </div>
  <div class="js-file-content Details-content--shown">

        <div class="data highlight js-blob-wrapper" style="overflow-x: auto">
          <table class="diff-table tab-size  " data-tab-size="8">
            
      <tr class="js-expandable-line" data-position="0">
    <td class="blob-num blob-num-expandable" colspan="2">
      <a href="#diff-bc815de73d23609d13958b097c129d61"
            class="diff-expander js-expand" title="Expand" aria-label="Expand"
            data-url="/mingwandroid/python-libarchive-c/blob_excerpt/8b7a17aa96930dd5bd23ccb3d0fda79cf37d9584?diff=unified&amp;in_wiki_context=&amp;left_hunk_size=6&amp;mode=100644&amp;next_line_num_left=26&amp;next_line_num_right=26&amp;path=libarchive%2Fextract.py&amp;prev_line_num_left=&amp;prev_line_num_right=&amp;right_hunk_size=8"
            data-left-range="1-25" data-right-range="1-25">
        <svg class="octicon octicon-unfold" viewBox="0 0 14 16" version="1.1" width="14" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M11.5 7.5L14 10c0 .55-.45 1-1 1H9v-1h3.5l-2-2h-7l-2 2H5v1H1c-.55 0-1-.45-1-1l2.5-2.5L0 5c0-.55.45-1 1-1h4v1H1.5l2 2h7l2-2H9V4h4c.55 0 1 .45 1 1l-2.5 2.5zM6 6h2V3h2L7 0 4 3h2v3zm2 3H6v3H4l3 3 3-3H8V9z"/></svg>
      </a>
    </td>
    <td class="blob-code blob-code-inner blob-code-hunk">@@ -26,6 +26,8 @@</td>
  </tr>

    <tr>
    <td id="diff-bc815de73d23609d13958b097c129d61L26" data-line-number="26"
        class="blob-num blob-num-context js-linkable-line-number"></td>

    <td id="diff-bc815de73d23609d13958b097c129d61R26" data-line-number="26"
        class="blob-num blob-num-context js-linkable-line-number"></td>

  <td class="blob-code blob-code-context">

    <span class="blob-code-inner"> <span class="pl-c1">EXTRACT_MAC_METADATA</span> <span class="pl-k">=</span> <span class="pl-c1"><span class="pl-k">0x</span>2000</span></span>

  </td>
</tr>



    <tr>
    <td id="diff-bc815de73d23609d13958b097c129d61L27" data-line-number="27"
        class="blob-num blob-num-context js-linkable-line-number"></td>

    <td id="diff-bc815de73d23609d13958b097c129d61R27" data-line-number="27"
        class="blob-num blob-num-context js-linkable-line-number"></td>

  <td class="blob-code blob-code-context">

    <span class="blob-code-inner"> <span class="pl-c1">EXTRACT_NO_HFS_COMPRESSION</span> <span class="pl-k">=</span> <span class="pl-c1"><span class="pl-k">0x</span>4000</span></span>

  </td>
</tr>



    <tr>
    <td id="diff-bc815de73d23609d13958b097c129d61L28" data-line-number="28"
        class="blob-num blob-num-context js-linkable-line-number"></td>

    <td id="diff-bc815de73d23609d13958b097c129d61R28" data-line-number="28"
        class="blob-num blob-num-context js-linkable-line-number"></td>

  <td class="blob-code blob-code-context">

    <span class="blob-code-inner"> <span class="pl-c1">EXTRACT_HFS_COMPRESSION_FORCED</span> <span class="pl-k">=</span> <span class="pl-c1"><span class="pl-k">0x</span>8000</span></span>

  </td>
</tr>



    <tr>
    <td class="blob-num blob-num-addition empty-cell"></td>

    <td id="diff-bc815de73d23609d13958b097c129d61R29" data-line-number="29"
        class="blob-num blob-num-addition js-linkable-line-number"></td>

  <td class="blob-code blob-code-addition">

    <span class="blob-code-inner">+<span class="pl-c1">EXTRACT_SECURE_NOABSOLUTEPATHS</span> <span class="pl-k">=</span> <span class="pl-c1"><span class="pl-k">0x</span>10000</span></span>

  </td>
</tr>



    <tr>
    <td class="blob-num blob-num-addition empty-cell"></td>

    <td id="diff-bc815de73d23609d13958b097c129d61R30" data-line-number="30"
        class="blob-num blob-num-addition js-linkable-line-number"></td>

  <td class="blob-code blob-code-addition">

    <span class="blob-code-inner">+<span class="pl-c1">EXTRACT_CLEAR_NOCHANGE_FFLAGS</span> <span class="pl-k">=</span> <span class="pl-c1"><span class="pl-k">0x</span>20000</span></span>

  </td>
</tr>



    <tr>
    <td id="diff-bc815de73d23609d13958b097c129d61L29" data-line-number="29"
        class="blob-num blob-num-context js-linkable-line-number"></td>

    <td id="diff-bc815de73d23609d13958b097c129d61R31" data-line-number="31"
        class="blob-num blob-num-context js-linkable-line-number"></td>

  <td class="blob-code blob-code-context">

    <span class="blob-code-inner"> </span>

  </td>
</tr>



    <tr>
    <td id="diff-bc815de73d23609d13958b097c129d61L30" data-line-number="30"
        class="blob-num blob-num-context js-linkable-line-number"></td>

    <td id="diff-bc815de73d23609d13958b097c129d61R32" data-line-number="32"
        class="blob-num blob-num-context js-linkable-line-number"></td>

  <td class="blob-code blob-code-context">

    <span class="blob-code-inner"> </span>

  </td>
</tr>



    <tr>
    <td id="diff-bc815de73d23609d13958b097c129d61L31" data-line-number="31"
        class="blob-num blob-num-context js-linkable-line-number"></td>

    <td id="diff-bc815de73d23609d13958b097c129d61R33" data-line-number="33"
        class="blob-num blob-num-context js-linkable-line-number"></td>

  <td class="blob-code blob-code-context">

    <span class="blob-code-inner"> <span class="pl-en">@contextmanager</span></span>

  </td>
</tr>



  <tr class="js-expandable-line">
   <td class="blob-num blob-num-expandable" colspan="2">
     <a href="#diff-bc815de73d23609d13958b097c129d61"
          class="diff-expander js-expand" title="Expand" aria-label="Expand"
          data-url="/mingwandroid/python-libarchive-c/blob_excerpt/8b7a17aa96930dd5bd23ccb3d0fda79cf37d9584?diff=unified&amp;in_wiki_context=&amp;mode=100644&amp;path=libarchive%2Fextract.py&amp;prev_line_num_left=31&amp;prev_line_num_right=33"
          data-left-range="32-76"
          data-right-range="34-76">
       <svg class="octicon octicon-unfold" viewBox="0 0 14 16" version="1.1" width="14" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M11.5 7.5L14 10c0 .55-.45 1-1 1H9v-1h3.5l-2-2h-7l-2 2H5v1H1c-.55 0-1-.45-1-1l2.5-2.5L0 5c0-.55.45-1 1-1h4v1H1.5l2 2h7l2-2H9V4h4c.55 0 1 .45 1 1l-2.5 2.5zM6 6h2V3h2L7 0 4 3h2v3zm2 3H6v3H4l3 3 3-3H8V9z"/></svg>
     </a>
   </td>
   <td class="blob-code blob-code-expandable"></td>
  </tr>

          </table>
        </div>

  </div>
</div>

    
<a name="diff-9a185a8257238f9f9f33a181d0fc66fd"></a>
<div id="diff-1"
     class="file js-file js-details-container Details
             
             
             
             
             
              show-inline-notes
           ">
  <div class="file-header js-file-header" data-path="tests/data/flags.tar" data-short-path="9a185a8" data-anchor="diff-9a185a8257238f9f9f33a181d0fc66fd">
    <div class="file-actions">

        <span class="show-file-notes pt-1">
          <label>
            <input type="checkbox" checked="checked" class="js-toggle-file-notes">
            Show comments
          </label>
        </span>

          <a href="/mingwandroid/python-libarchive-c/blob/4784e43a9ca7835cdfbceba718a527e1f8033447/tests/data/flags.tar" class="btn btn-sm tooltipped tooltipped-nw" rel="nofollow" aria-label="View the whole file at version 4784e43 ">View</a>


      <button type="button" class="btn-octicon p-1 pr-2 js-details-target" aria-label="Toggle diff text" aria-expanded="true">
        <svg class="octicon octicon-chevron-down Details-content--shown" viewBox="0 0 10 16" version="1.1" width="10" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M5 11L0 6l1.5-1.5L5 8.25 8.5 4.5 10 6l-5 5z"/></svg>
        <svg class="octicon octicon-chevron-up Details-content--hidden" viewBox="0 0 10 16" version="1.1" width="10" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M10 10l-1.5 1.5L5 7.75 1.5 11.5 0 10l5-5 5 5z"/></svg>
      </button>
    </div>
    <div class="file-info">
        <span class="diffstat tooltipped tooltipped-e" aria-label="Binary file added">
          BIN
          <span class="text-green">
            <span class="block-diff-neutral"></span><span class="block-diff-neutral"></span><span class="block-diff-neutral"></span><span class="block-diff-neutral"></span><span class="block-diff-neutral"></span>
          </span>
        </span>

      <a href="#diff-9a185a8257238f9f9f33a181d0fc66fd" class="link-gray-dark"
         title="tests/data/flags.tar">tests/data/flags.tar</a>

      
    </div>
  </div>
  <div class="js-file-content Details-content--shown">

        <div class="data highlight empty">
          Binary file not shown.
        </div>

  </div>
</div>

    
<a name="diff-0d3893ca6f89d4c690cb11e2bb970ba3"></a>
<div id="diff-2"
     class="file js-file js-details-container Details
             
             
             
             
             
              show-inline-notes
           ">
  <div class="file-header js-file-header" data-path="tests/test_security_flags.py" data-short-path="0d3893c" data-anchor="diff-0d3893ca6f89d4c690cb11e2bb970ba3">
    <div class="file-actions">

        <span class="show-file-notes pt-1">
          <label>
            <input type="checkbox" checked="checked" class="js-toggle-file-notes">
            Show comments
          </label>
        </span>

          <a href="/mingwandroid/python-libarchive-c/blob/4784e43a9ca7835cdfbceba718a527e1f8033447/tests/test_security_flags.py" class="btn btn-sm tooltipped tooltipped-nw" rel="nofollow" aria-label="View the whole file at version 4784e43 ">View</a>


      <button type="button" class="btn-octicon p-1 pr-2 js-details-target" aria-label="Toggle diff text" aria-expanded="true">
        <svg class="octicon octicon-chevron-down Details-content--shown" viewBox="0 0 10 16" version="1.1" width="10" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M5 11L0 6l1.5-1.5L5 8.25 8.5 4.5 10 6l-5 5z"/></svg>
        <svg class="octicon octicon-chevron-up Details-content--hidden" viewBox="0 0 10 16" version="1.1" width="10" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M10 10l-1.5 1.5L5 7.75 1.5 11.5 0 10l5-5 5 5z"/></svg>
      </button>
    </div>
    <div class="file-info">
        <span class="diffstat tooltipped tooltipped-e" aria-label="32 additions &amp; 0 deletions">32 <span class="block-diff-added"></span><span class="block-diff-added"></span><span class="block-diff-added"></span><span class="block-diff-added"></span><span class="block-diff-added"></span></span>

      <a href="#diff-0d3893ca6f89d4c690cb11e2bb970ba3" class="link-gray-dark"
         title="tests/test_security_flags.py">tests/test_security_flags.py</a>

      
    </div>
  </div>
  <div class="js-file-content Details-content--shown">

        <div class="data highlight js-blob-wrapper" style="overflow-x: auto">
          <table class="diff-table tab-size  " data-tab-size="8">
            
      <tr data-position="0">
    <td id="diff-0d3893ca6f89d4c690cb11e2bb970ba3L-1" class="blob-num blob-num-hunk non-expandable" data-line-number="..."></td>
    <td id="diff-0d3893ca6f89d4c690cb11e2bb970ba3R0" class="blob-num blob-num-hunk non-expandable" data-line-number="..."></td>
    <td class="blob-code blob-code-inner blob-code-hunk">@@ -0,0 +1,32 @@</td>
  </tr>

    <tr>
    <td class="blob-num blob-num-addition empty-cell"></td>

    <td id="diff-0d3893ca6f89d4c690cb11e2bb970ba3R1" data-line-number="1"
        class="blob-num blob-num-addition js-linkable-line-number"></td>

  <td class="blob-code blob-code-addition">

    <span class="blob-code-inner">+<span class="pl-s"><span class="pl-pds">&quot;&quot;&quot;</span>Test security-related extraction flags.<span class="pl-pds">&quot;&quot;&quot;</span></span></span>

  </td>
</tr>



    <tr>
    <td class="blob-num blob-num-addition empty-cell"></td>

    <td id="diff-0d3893ca6f89d4c690cb11e2bb970ba3R2" data-line-number="2"
        class="blob-num blob-num-addition js-linkable-line-number"></td>

  <td class="blob-code blob-code-addition">

    <span class="blob-code-inner">+</span>

  </td>
</tr>



    <tr>
    <td class="blob-num blob-num-addition empty-cell"></td>

    <td id="diff-0d3893ca6f89d4c690cb11e2bb970ba3R3" data-line-number="3"
        class="blob-num blob-num-addition js-linkable-line-number"></td>

  <td class="blob-code blob-code-addition">

    <span class="blob-code-inner">+<span class="pl-k">from</span> <span class="pl-c1">__future__</span> <span class="pl-k">import</span> division, print_function, unicode_literals</span>

  </td>
</tr>



    <tr>
    <td class="blob-num blob-num-addition empty-cell"></td>

    <td id="diff-0d3893ca6f89d4c690cb11e2bb970ba3R4" data-line-number="4"
        class="blob-num blob-num-addition js-linkable-line-number"></td>

  <td class="blob-code blob-code-addition">

    <span class="blob-code-inner">+<span class="pl-k">import</span> pytest</span>

  </td>
</tr>



    <tr>
    <td class="blob-num blob-num-addition empty-cell"></td>

    <td id="diff-0d3893ca6f89d4c690cb11e2bb970ba3R5" data-line-number="5"
        class="blob-num blob-num-addition js-linkable-line-number"></td>

  <td class="blob-code blob-code-addition">

    <span class="blob-code-inner">+<span class="pl-k">import</span> os</span>

  </td>
</tr>



    <tr>
    <td class="blob-num blob-num-addition empty-cell"></td>

    <td id="diff-0d3893ca6f89d4c690cb11e2bb970ba3R6" data-line-number="6"
        class="blob-num blob-num-addition js-linkable-line-number"></td>

  <td class="blob-code blob-code-addition">

    <span class="blob-code-inner">+</span>

  </td>
</tr>



    <tr>
    <td class="blob-num blob-num-addition empty-cell"></td>

    <td id="diff-0d3893ca6f89d4c690cb11e2bb970ba3R7" data-line-number="7"
        class="blob-num blob-num-addition js-linkable-line-number"></td>

  <td class="blob-code blob-code-addition">

    <span class="blob-code-inner">+<span class="pl-k">from</span> libarchive <span class="pl-k">import</span> extract_file</span>

  </td>
</tr>



    <tr>
    <td class="blob-num blob-num-addition empty-cell"></td>

    <td id="diff-0d3893ca6f89d4c690cb11e2bb970ba3R8" data-line-number="8"
        class="blob-num blob-num-addition js-linkable-line-number"></td>

  <td class="blob-code blob-code-addition">

    <span class="blob-code-inner">+<span class="pl-k">from</span> libarchive.extract <span class="pl-k">import</span> <span class="pl-c1">EXTRACT_SECURE_NOABSOLUTEPATHS</span>, \</span>

  </td>
</tr>



    <tr>
    <td class="blob-num blob-num-addition empty-cell"></td>

    <td id="diff-0d3893ca6f89d4c690cb11e2bb970ba3R9" data-line-number="9"
        class="blob-num blob-num-addition js-linkable-line-number"></td>

  <td class="blob-code blob-code-addition">

    <span class="blob-code-inner">+    <span class="pl-c1">EXTRACT_SECURE_NODOTDOT</span></span>

  </td>
</tr>



    <tr>
    <td class="blob-num blob-num-addition empty-cell"></td>

    <td id="diff-0d3893ca6f89d4c690cb11e2bb970ba3R10" data-line-number="10"
        class="blob-num blob-num-addition js-linkable-line-number"></td>

  <td class="blob-code blob-code-addition">

    <span class="blob-code-inner">+<span class="pl-k">from</span> libarchive.exception <span class="pl-k">import</span> ArchiveError</span>

  </td>
</tr>



    <tr>
    <td class="blob-num blob-num-addition empty-cell"></td>

    <td id="diff-0d3893ca6f89d4c690cb11e2bb970ba3R11" data-line-number="11"
        class="blob-num blob-num-addition js-linkable-line-number"></td>

  <td class="blob-code blob-code-addition">

    <span class="blob-code-inner">+<span class="pl-k">from</span> . <span class="pl-k">import</span> data_dir</span>

  </td>
</tr>



    <tr>
    <td class="blob-num blob-num-addition empty-cell"></td>

    <td id="diff-0d3893ca6f89d4c690cb11e2bb970ba3R12" data-line-number="12"
        class="blob-num blob-num-addition js-linkable-line-number"></td>

  <td class="blob-code blob-code-addition">

    <span class="blob-code-inner">+</span>

  </td>
</tr>



    <tr>
    <td class="blob-num blob-num-addition empty-cell"></td>

    <td id="diff-0d3893ca6f89d4c690cb11e2bb970ba3R13" data-line-number="13"
        class="blob-num blob-num-addition js-linkable-line-number"></td>

  <td class="blob-code blob-code-addition">

    <span class="blob-code-inner">+</span>

  </td>
</tr>



    <tr>
    <td class="blob-num blob-num-addition empty-cell"></td>

    <td id="diff-0d3893ca6f89d4c690cb11e2bb970ba3R14" data-line-number="14"
        class="blob-num blob-num-addition js-linkable-line-number"></td>

  <td class="blob-code blob-code-addition">

    <span class="blob-code-inner">+<span class="pl-k">def</span> <span class="pl-en">run_test</span>(<span class="pl-smi">flag</span>, <span class="pl-smi">filename</span>):</span>

  </td>
</tr>



    <tr>
    <td class="blob-num blob-num-addition empty-cell"></td>

    <td id="diff-0d3893ca6f89d4c690cb11e2bb970ba3R15" data-line-number="15"
        class="blob-num blob-num-addition js-linkable-line-number"></td>

  <td class="blob-code blob-code-addition">

    <span class="blob-code-inner">+    archive_path <span class="pl-k">=</span> os.path.join(data_dir, <span class="pl-s"><span class="pl-pds">&#39;</span>flags.tar<span class="pl-pds">&#39;</span></span>)</span>

  </td>
</tr>



    <tr>
    <td class="blob-num blob-num-addition empty-cell"></td>

    <td id="diff-0d3893ca6f89d4c690cb11e2bb970ba3R16" data-line-number="16"
        class="blob-num blob-num-addition js-linkable-line-number"></td>

  <td class="blob-code blob-code-addition">

    <span class="blob-code-inner">+    <span class="pl-k">try</span>:</span>

  </td>
</tr>



    <tr>
    <td class="blob-num blob-num-addition empty-cell"></td>

    <td id="diff-0d3893ca6f89d4c690cb11e2bb970ba3R17" data-line-number="17"
        class="blob-num blob-num-addition js-linkable-line-number"></td>

  <td class="blob-code blob-code-addition">

    <span class="blob-code-inner">+        extract_file(archive_path)</span>

  </td>
</tr>



    <tr>
    <td class="blob-num blob-num-addition empty-cell"></td>

    <td id="diff-0d3893ca6f89d4c690cb11e2bb970ba3R18" data-line-number="18"
        class="blob-num blob-num-addition js-linkable-line-number"></td>

  <td class="blob-code blob-code-addition">

    <span class="blob-code-inner">+        <span class="pl-k">with</span> pytest.raises(ArchiveError):</span>

  </td>
</tr>



    <tr>
    <td class="blob-num blob-num-addition empty-cell"></td>

    <td id="diff-0d3893ca6f89d4c690cb11e2bb970ba3R19" data-line-number="19"
        class="blob-num blob-num-addition js-linkable-line-number"></td>

  <td class="blob-code blob-code-addition">

    <span class="blob-code-inner">+            extract_file(archive_path, flag)</span>

  </td>
</tr>



    <tr>
    <td class="blob-num blob-num-addition empty-cell"></td>

    <td id="diff-0d3893ca6f89d4c690cb11e2bb970ba3R20" data-line-number="20"
        class="blob-num blob-num-addition js-linkable-line-number"></td>

  <td class="blob-code blob-code-addition">

    <span class="blob-code-inner">+    <span class="pl-k">finally</span>:</span>

  </td>
</tr>



    <tr>
    <td class="blob-num blob-num-addition empty-cell"></td>

    <td id="diff-0d3893ca6f89d4c690cb11e2bb970ba3R21" data-line-number="21"
        class="blob-num blob-num-addition js-linkable-line-number"></td>

  <td class="blob-code blob-code-addition">

    <span class="blob-code-inner">+        <span class="pl-k">if</span> os.path.exists(filename):</span>

  </td>
</tr>



    <tr>
    <td class="blob-num blob-num-addition empty-cell"></td>

    <td id="diff-0d3893ca6f89d4c690cb11e2bb970ba3R22" data-line-number="22"
        class="blob-num blob-num-addition js-linkable-line-number"></td>

  <td class="blob-code blob-code-addition">

    <span class="blob-code-inner">+            os.remove(filename)</span>

  </td>
</tr>



    <tr>
    <td class="blob-num blob-num-addition empty-cell"></td>

    <td id="diff-0d3893ca6f89d4c690cb11e2bb970ba3R23" data-line-number="23"
        class="blob-num blob-num-addition js-linkable-line-number"></td>

  <td class="blob-code blob-code-addition">

    <span class="blob-code-inner">+</span>

  </td>
</tr>



    <tr>
    <td class="blob-num blob-num-addition empty-cell"></td>

    <td id="diff-0d3893ca6f89d4c690cb11e2bb970ba3R24" data-line-number="24"
        class="blob-num blob-num-addition js-linkable-line-number"></td>

  <td class="blob-code blob-code-addition">

    <span class="blob-code-inner">+</span>

  </td>
</tr>



    <tr>
    <td class="blob-num blob-num-addition empty-cell"></td>

    <td id="diff-0d3893ca6f89d4c690cb11e2bb970ba3R25" data-line-number="25"
        class="blob-num blob-num-addition js-linkable-line-number"></td>

  <td class="blob-code blob-code-addition">

    <span class="blob-code-inner">+<span class="pl-k">def</span> <span class="pl-en">test_no_dot_dot</span>():</span>

  </td>
</tr>



    <tr>
    <td class="blob-num blob-num-addition empty-cell"></td>

    <td id="diff-0d3893ca6f89d4c690cb11e2bb970ba3R26" data-line-number="26"
        class="blob-num blob-num-addition js-linkable-line-number"></td>

  <td class="blob-code blob-code-addition">

    <span class="blob-code-inner">+    run_test(<span class="pl-c1">EXTRACT_SECURE_NODOTDOT</span>,</span>

  </td>
</tr>



    <tr>
    <td class="blob-num blob-num-addition empty-cell"></td>

    <td id="diff-0d3893ca6f89d4c690cb11e2bb970ba3R27" data-line-number="27"
        class="blob-num blob-num-addition js-linkable-line-number"></td>

  <td class="blob-code blob-code-addition">

    <span class="blob-code-inner">+             <span class="pl-s"><span class="pl-pds">&#39;</span>../python-libarchive-c-test-dot-dot-file<span class="pl-pds">&#39;</span></span>)</span>

  </td>
</tr>



    <tr>
    <td class="blob-num blob-num-addition empty-cell"></td>

    <td id="diff-0d3893ca6f89d4c690cb11e2bb970ba3R28" data-line-number="28"
        class="blob-num blob-num-addition js-linkable-line-number"></td>

  <td class="blob-code blob-code-addition">

    <span class="blob-code-inner">+</span>

  </td>
</tr>



    <tr>
    <td class="blob-num blob-num-addition empty-cell"></td>

    <td id="diff-0d3893ca6f89d4c690cb11e2bb970ba3R29" data-line-number="29"
        class="blob-num blob-num-addition js-linkable-line-number"></td>

  <td class="blob-code blob-code-addition">

    <span class="blob-code-inner">+</span>

  </td>
</tr>



    <tr>
    <td class="blob-num blob-num-addition empty-cell"></td>

    <td id="diff-0d3893ca6f89d4c690cb11e2bb970ba3R30" data-line-number="30"
        class="blob-num blob-num-addition js-linkable-line-number"></td>

  <td class="blob-code blob-code-addition">

    <span class="blob-code-inner">+<span class="pl-k">def</span> <span class="pl-en">test_absolute</span>():</span>

  </td>
</tr>



    <tr>
    <td class="blob-num blob-num-addition empty-cell"></td>

    <td id="diff-0d3893ca6f89d4c690cb11e2bb970ba3R31" data-line-number="31"
        class="blob-num blob-num-addition js-linkable-line-number"></td>

  <td class="blob-code blob-code-addition">

    <span class="blob-code-inner">+    run_test(<span class="pl-c1">EXTRACT_SECURE_NOABSOLUTEPATHS</span>,</span>

  </td>
</tr>



    <tr>
    <td class="blob-num blob-num-addition empty-cell"></td>

    <td id="diff-0d3893ca6f89d4c690cb11e2bb970ba3R32" data-line-number="32"
        class="blob-num blob-num-addition js-linkable-line-number"></td>

  <td class="blob-code blob-code-addition">

    <span class="blob-code-inner">+             <span class="pl-s"><span class="pl-pds">&#39;</span>/tmp/python-libarchive-c-test-absolute-file<span class="pl-pds">&#39;</span></span>)</span>

  </td>
</tr>




          </table>
        </div>

  </div>
</div>

  </div>

</div>

<button type="button" class="js-toggle-all-file-notes" data-hotkey="i" style="display:none">Toggle all file notes</button>

<svg aria-hidden="true" width="340px" height="84px" viewBox="0 0 340 84" version="1.1"
  xmlns="http://www.w3.org/2000/svg"
  xmlns:xlink="http://www.w3.org/1999/xlink"
  class="diff-placeholder-svg position-absolute bottom-0">
  <defs>
    <clippath id="diff-placeholder">
      <rect x="0" y="0" width="67.0175439" height="11.9298746" rx="2"></rect>
      <rect x="18.9473684" y="47.7194983" width="100.701754" height="11.9298746" rx="2"></rect>
      <rect x="0" y="71.930126" width="37.8947368" height="11.9298746" rx="2"></rect>
      <rect x="127.017544" y="48.0703769" width="53.3333333" height="11.9298746" rx="2"></rect>
      <rect x="187.719298" y="48.0703769" width="72.9824561" height="11.9298746" rx="2"></rect>
      <rect x="76.8421053" y="0" width="140.350877" height="11.9298746" rx="2"></rect>
      <rect x="17.8947368" y="23.8597491" width="140.350877" height="11.9298746" rx="2"></rect>
      <rect x="166.315789" y="23.8597491" width="173.684211" height="11.9298746" rx="2"></rect>
    </clippath>

    <linearGradient id="animated-diff-gradient" x1="0" x2="0" y1="0" y2="1" spreadMethod="reflect">
      <stop offset="0" stop-color="#eee"></stop>
      <stop offset="0.2" stop-color="#eee"></stop>
      <stop offset="0.5" stop-color="#ddd"></stop>
      <stop offset="0.8" stop-color="#eee"></stop>
      <stop offset="1" stop-color="#eee"></stop>
      <animateTransform attributeName="y1" values="0%; 100%; 0" dur="1s" repeatCount="3"></animateTransform>
      <animateTransform attributeName="y2" values="100%; 200%; 0" dur="1s" repeatCount="3"></animateTransform>
    </linearGradient>
  </defs>
</svg>



  <div id="all_commit_comments" class="js-quote-selection-container ">

    <div class="commit-comments-heading">
      
<div id="partial-visible-comments-header">
  <span class="float-right">
    
  </span>

  <h4 class="commit-comment-count">
    0 comments
    on commit <code class="commit-sha">4784e43</code>
  </h4>

</div>

    </div>

    <div id="comments" class="comment-holder">
      


  <!-- Rendered timeline since 2017-05-14 05:25:34 -->
  <div id="partial-timeline-marker"
        class="js-timeline-marker js-socket-channel js-updatable-content"
        data-channel="repo:135218665:commit:4784e43a9ca7835cdfbceba718a527e1f8033447"
        data-url="/mingwandroid/python-libarchive-c/commit/4784e43a9ca7835cdfbceba718a527e1f8033447/show_partial?partial=commit%2Ftimeline_marker&amp;since=1494764734"
        data-last-modified="Sun, 14 May 2017 12:25:34 GMT">

  </div>

    </div>

    

      Please <a rel="nofollow" href="/login?return_to=https%3A%2F%2Fgithub.com%2Fmingwandroid%2Fpython-libarchive-c%2Fcommit%2F4784e43a9ca7835cdfbceba718a527e1f8033447">sign in</a> to comment.

  </div>


  </div>
  <div class="modal-backdrop js-touch-events"></div>
</div>

    </div>
  </div>

  </div>

      
<div class="footer container-lg px-3" role="contentinfo">
  <div class="position-relative d-flex flex-justify-between pt-6 pb-2 mt-6 f6 text-gray border-top border-gray-light ">
    <ul class="list-style-none d-flex flex-wrap ">
      <li class="mr-3">&copy; 2018 <span title="0.95496s from unicorn-27674610-bx1q1">GitHub</span>, Inc.</li>
        <li class="mr-3"><a data-ga-click="Footer, go to terms, text:terms" href="https://github.com/site/terms">Terms</a></li>
        <li class="mr-3"><a data-ga-click="Footer, go to privacy, text:privacy" href="https://github.com/site/privacy">Privacy</a></li>
        <li class="mr-3"><a href="https://help.github.com/articles/github-security/" data-ga-click="Footer, go to security, text:security">Security</a></li>
        <li class="mr-3"><a href="https://status.github.com/" data-ga-click="Footer, go to status, text:status">Status</a></li>
        <li><a data-ga-click="Footer, go to help, text:help" href="https://help.github.com">Help</a></li>
    </ul>

    <a aria-label="Homepage" title="GitHub" class="footer-octicon" href="https://github.com">
      <svg height="24" class="octicon octicon-mark-github" viewBox="0 0 16 16" version="1.1" width="24" aria-hidden="true"><path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0 0 16 8c0-4.42-3.58-8-8-8z"/></svg>
</a>
   <ul class="list-style-none d-flex flex-wrap ">
        <li class="mr-3"><a data-ga-click="Footer, go to contact, text:contact" href="https://github.com/contact">Contact GitHub</a></li>
      <li class="mr-3"><a href="https://developer.github.com" data-ga-click="Footer, go to api, text:api">API</a></li>
      <li class="mr-3"><a href="https://training.github.com" data-ga-click="Footer, go to training, text:training">Training</a></li>
      <li class="mr-3"><a href="https://shop.github.com" data-ga-click="Footer, go to shop, text:shop">Shop</a></li>
        <li class="mr-3"><a href="https://blog.github.com" data-ga-click="Footer, go to blog, text:blog">Blog</a></li>
        <li><a data-ga-click="Footer, go to about, text:about" href="https://github.com/about">About</a></li>

    </ul>
  </div>
  <div class="d-flex flex-justify-center pb-6">
    <span class="f6 text-gray-light"></span>
  </div>
</div>



  <div id="ajax-error-message" class="ajax-error-message flash flash-error">
    <svg class="octicon octicon-alert" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"/></svg>
    <button type="button" class="flash-close js-ajax-error-dismiss" aria-label="Dismiss error">
      <svg class="octicon octicon-x" viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.48 8l3.75 3.75-1.48 1.48L6 9.48l-3.75 3.75-1.48-1.48L4.52 8 .77 4.25l1.48-1.48L6 6.52l3.75-3.75 1.48 1.48L7.48 8z"/></svg>
    </button>
    You can’t perform that action at this time.
  </div>


    <script crossorigin="anonymous" integrity="sha512-MWhu3P7Ss2c8wk/fvHCiNZ3LNVjHP4kaHYeO7xXrYQ1lt3MODm9jla1+FhjKVzoXk64jc05569Ia9K3Zq0Fd9Q==" type="application/javascript" src="https://assets-cdn.github.com/assets/compat-1c66c88316e8e9eacfac51af6ff01eac.js"></script>
    <script crossorigin="anonymous" integrity="sha512-X5Yz1+Qk9VsyD2X8vZkreaq36jjyMgMFXoVdiC7MDatN90E2HMy8SBo1Uv5+rHaLxCmF0icy+NwqIhLkci+Mvw==" type="application/javascript" src="https://assets-cdn.github.com/assets/frameworks-dca882fa8d6991b8dd62fde97105da60.js"></script>
    
    <script crossorigin="anonymous" async="async" integrity="sha512-kY82ZYHMFQQwb+2wSFyizzi88FEjErG6MGp1i9hD7RAZ1aMWNLy2v1whI+dzNVqINdxN2+AEeuuJH8WzWv4gag==" type="application/javascript" src="https://assets-cdn.github.com/assets/github-ee77c9e5b9dca5a57ed7eeeb5cf9abfd.js"></script>
    
    
    
  <div class="js-stale-session-flash stale-session-flash flash flash-warn flash-banner d-none">
    <svg class="octicon octicon-alert" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"/></svg>
    <span class="signed-in-tab-flash">You signed in with another tab or window. <a href="">Reload</a> to refresh your session.</span>
    <span class="signed-out-tab-flash">You signed out in another tab or window. <a href="">Reload</a> to refresh your session.</span>
  </div>
  <div class="facebox" id="facebox" style="display:none;">
  <div class="facebox-popup">
    <div class="facebox-content" role="dialog" aria-labelledby="facebox-header" aria-describedby="facebox-description">
    </div>
    <button type="button" class="facebox-close js-facebox-close" aria-label="Close modal">
      <svg class="octicon octicon-x" viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.48 8l3.75 3.75-1.48 1.48L6 9.48l-3.75 3.75-1.48-1.48L4.52 8 .77 4.25l1.48-1.48L6 6.52l3.75-3.75 1.48 1.48L7.48 8z"/></svg>
    </button>
  </div>
</div>

  <div class="Popover js-hovercard-content position-absolute" style="display: none; outline: none;" tabindex="0">
  <div class="Popover-message Popover-message--bottom-left Popover-message--large Box box-shadow-large" style="width:360px;">
  </div>
</div>

<div id="hovercard-aria-description" class="sr-only">
  Press h to open a hovercard with more details.
</div>


  </body>
</html>

