Source: sudo
Version: 1.9.16p2-1
Tags: path
User: reproducible-bui...@lists.alioth.debian.org
Usertag: environment
X-Debbugs-CC: reproducible-bui...@lists.alioth.debian.org

Hi,

sudo's env "plugin" has a function called tz_is_safe, which appears 
to check if a set TZ envvar is really a valid timezone. To do that, 
it looks into the zoneinfo database. The path to the zoneinfo 
database is detected at *build* time, _if_ the zoneinfo database is 
available.

Code in tz_is_safe looks like this:

  #ifdef _PATH_ZONEINFO
      if (strncmp(tzval, _PATH_ZONEINFO, sizeof(_PATH_ZONEINFO) - 1) != 0 ||
          tzval[sizeof(_PATH_ZONEINFO) - 1] != '/')
          debug_return_bool(false);
  #else
      /* Assume the worst. */
      debug_return_bool(false);
  #endif

_PATH_ZONEINFO is filled by configure, specifically the SUDO_TZDIR 
macro.  It tries to find a "zoneinfo" directory in one of /usr/share 
/usr/share/lib /usr/lib /etc. If none is found, _PATH_ZONEINFO is 
unset.

builds of sudo done on the buildds have the "tzdata" package 
available in the chroot. Thus the tz_is_safe code works.

However, tzdata is not guaranteed to be available, without sudo 
actually Build-Depend-ing on it. Also, without the Build-Depends:, 
tzdata is not recorded in the buildinfo file. This causes sudo to be 
not reproducible, as tzdata does not get installed in rebuilderd, if 
it is not listed in the buildinfo file.

TL;DR: please add Build-Depends: tzdata.

Thanks,
Chris

Reply via email to