From: Greg Beaver Date: Mon, 28 Apr 2008 06:49:56 +0000 (+0000) Subject: fix off-by-one for writing of timestamp and file modes in tar files X-Git-Tag: RELEASE_2_0_0b1~166 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=ff90f59ea9ea13d97716f6e48f0f7ac8f41e8bd7;p=php fix off-by-one for writing of timestamp and file modes in tar files --- diff --git a/ext/phar/tar.c b/ext/phar/tar.c index eeb8c2a705..e8dceccac5 100644 --- a/ext/phar/tar.c +++ b/ext/phar/tar.c @@ -434,14 +434,14 @@ int phar_tar_writeheaders(void *pDest, void *argument TSRMLS_DC) } else { memcpy(header.name, entry->filename, entry->filename_len); } - phar_tar_octal(header.mode, entry->flags & PHAR_ENT_PERM_MASK, sizeof(header.mode)); + phar_tar_octal(header.mode, entry->flags & PHAR_ENT_PERM_MASK, sizeof(header.mode)-1); if (FAILURE == phar_tar_octal(header.size, entry->uncompressed_filesize, sizeof(header.size))) { if (fp->error) { spprintf(fp->error, 4096, "tar-based phar \"%s\" cannot be created, filename \"%s\" is too large for tar file format", entry->phar->fname, entry->filename); } return ZEND_HASH_APPLY_STOP; } - if (FAILURE == phar_tar_octal(header.mtime, entry->timestamp, sizeof(header.mtime))) { + if (FAILURE == phar_tar_octal(header.mtime, entry->timestamp, sizeof(header.mtime)-1)) { if (fp->error) { spprintf(fp->error, 4096, "tar-based phar \"%s\" cannot be created, file modification time of file \"%s\" is too large for tar file format", entry->phar->fname, entry->filename); }