Commit graph

211 commits

Author SHA1 Message Date
Dan Albert
1ae0764e01 Prevent unaligned read in libziparchive.
Change-Id: I4afc3729a1b2c06a6621cb8c9742fc94b5a665f5
2015-04-09 17:00:14 -07:00
Elliott Hughes
bcc2b5f44a Remove LOCAL_ADDITIONAL_DEPENDENCIES in cases where it's not needed.
Change-Id: I720b8ef1050da45a7833adef8219b6acb2cf3a38
2015-04-02 14:31:07 -07:00
Greg Hackmann
503cd6d437 libziparchive: fix extraction of >2GiB images
Bug: 19888174

Change-Id: I33a577909ced522d46223e2182e0bb18c291af27
Signed-off-by: Greg Hackmann <ghackmann@google.com>
2015-03-23 14:30:40 -07:00
Mykola Kondratenko
50afc159b3 libziparchive: fix issue with a directory with one file
libziparchive fails to iterate some bootanimation archives
reporting invalid offset error. This is caused by failure
to process a directory with one file
(when name_offset + file_name_length == cd_offset).

Change-Id: I2733e7f782c14a6fadd5491bb94318ac968df206
2015-03-19 09:28:41 +00:00
Dmitriy Ivanov
edbabfe9fe Allocate buffers on the heap
Change-Id: I96c8a50e8987e8ea77d0766ccf3c619f60377864
2015-03-12 14:47:52 -07:00
Dmitriy Ivanov
1f741e51bc Remove some more gotos
Change-Id: I9c4b3a5aecf4011653933b051e67605a6feb123f
2015-03-06 14:26:37 -08:00
Dmitriy Ivanov
f94e159007 Reapply -Wold-style-cast
Added pragmas to disable checks for the method
 using libz.h macros.

Change-Id: I25aa1adf09f3ecff61d8fea6306b24b37990ab46
2015-03-06 13:57:43 -08:00
Dmitriy Ivanov
34d1b0fa63 Fix build: Remove -Wold-style-cast
libz.h has macros using old-style-cast.

Change-Id: I48f7d85805c7c34e1453c863da3c9e734a57d479
2015-03-06 13:07:52 -08:00
Dmitriy Ivanov
3ea93da3c2 Remove some gotos
Change-Id: I0e162c8e0a700940f4302786b8523e5b2f5e5c27
2015-03-06 12:45:03 -08:00
Dmitriy Ivanov
f4cb8e2ac2 Cleanup old-style-cast warnings
Change-Id: I6e17fd993557cbf78ade787f112794358aee39c8
2015-03-06 10:50:56 -08:00
Dmitriy Ivanov
4b67f8339d Remove unnecessary allocation of FileMaps
Change-Id: I97bb72b9edeee5b3eff4ffd21a761a1af472a3b5
2015-03-06 10:22:34 -08:00
Narayan Kamath
6832a7a4e0 Remove useless refCounting from FileMap.
Nobody ever called acquire() so release() was always
equivalent to delete. Just use delete instead so that
people can use unique_ptr directly (or shared_ptr if
they really want refcounts).

Change-Id: I9e3ad5e0f6a4fcc4e02e5a2ff7ef9514fe234415
2015-02-23 15:49:43 +00:00
Dmitriy Ivanov
40b52b2c88 Add close_file flag to OpenArchiveFd()
* We should be able to keep fd alive after CloseArchive()

Change-Id: I1aa2c039bb2a590ae72f256acc9ba5401c2c59b1
2015-01-30 17:57:13 -08:00
Narayan Kamath
3f5bba537e Merge "Reject zip archives whose entry names are not valid UTF-8." 2014-12-08 13:08:34 +00:00
Narayan Kamath
044bc8ee89 Reject zip archives whose entry names are not valid UTF-8.
bug: 18584205
Change-Id: Iaf3e8211dab6a1e3923f7fee6ea7fc693972dba3
2014-12-08 12:25:05 +00:00
Trevor Drake
f73237346e Clean up libziparchive Android.mk
Removed LOCAL_C_INCLUDES which are no longer necessary as zlib
now uses the LOCAL_EXPORT_C_INCLUDE_DIRS mechanism.

Removed a couple of redundant LOCAL_MODULE entries

Tested compiling some of the projects that make use of libziparchive
and libziparchive-host using a clean out dir with aosp_flounder-userdebug
aosp_arm-eng targets

make -j3 libziparchive libandroidfw libartd libart libjavacore libjavacoretests aapt

Change-Id: I2988f1b3a62d1df2b5eada4ad39a9246ac1184fb
2014-12-06 00:07:05 +00:00
Andreas Gampe
d0e6dc1ad1 Libziparchive: Remove unused variable
For build-system CFLAGS clean-up, remove unused variable.

Change-Id: Icc33cf5d0a5fe9a77c277b100de01b70164cc351
2014-11-24 10:09:06 -08:00
Yabin Cui
70160f4454 kill HAVE_PREAD
Bug: 18397613
Change-Id: I3990bd0f95cf38c5a9229180a1ddc699941892fc
2014-11-19 20:47:18 -08:00
Dan Albert
5fc8f683e6 am 7a92d20e: Merge "Clean up some test makefiles."
* commit '7a92d20ec845c07472eaea7cf14fd0e69df836ef':
  Clean up some test makefiles.
2014-11-05 02:27:42 +00:00
Dan Albert
27d166cb3a Clean up some test makefiles.
Needed for building with libc++ as the default STL.

Bug: 15193147
Change-Id: I8b462bd288fbea7e0ab182f85ffcbf438afb6aa4
2014-11-04 17:19:55 -08:00
Ian Rogers
8dac3559dd am b968d5c8: Merge "Add shared library version of libziparchive."
* commit 'b968d5c8468c9b0707f88f773fae16074e9018cf':
  Add shared library version of libziparchive.
2014-10-30 18:08:17 +00:00
Ian Rogers
40ac96c72c Add shared library version of libziparchive.
Change-Id: I9abded3bbff0e7976b1849c73e6978dd10ca84cd
2014-10-30 09:53:38 -07:00
Xavier Ducrohet
0c7ad123ca am cd1da4e0: Fix toolchain issue for windows build of libziparchive.
* commit 'cd1da4e04f0eb71a92a586c66acd0e34115608e1':
  Fix toolchain issue for windows build of libziparchive.
2014-10-16 16:55:08 +00:00
Xavier Ducrohet
cd1da4e04f Fix toolchain issue for windows build of libziparchive.
With mingw 4.8, the new default packed behavior is broken and makes
zip archive fails due to unexpected misalignment in
CentralDirectoryRecord.

This patch uses -mno-ms-bitfields to revert to the old packed
behavior.

Change-Id: Ic977c841e330e19451db1d31ddb22e570a525062
2014-10-16 07:49:16 +00:00
Piotr Jastrzebski
0c1b894b69 Reject zip archives with entry names containing \0.
There should never be a need of an entry name with \0 character.

Bug: 16162465

(cherry picked from commit 78271ba97b)

Change-Id: I68c72fb45e8ec70eb125cfc887488bc18ba5447d
2014-08-26 13:48:44 +01:00
Piotr Jastrzebski
8fd1f27ed8 Merge "Reject zip archives with entry names containing \0." 2014-08-16 05:59:09 +00:00
Piotr Jastrzebski
78271ba97b Reject zip archives with entry names containing \0.
There should never be a need of an entry name with \0 character.

Bug: 16162465
Change-Id: Ia2ec57959280c1bb972c4d59d890c8540c5b9081
2014-08-19 11:02:58 +01:00
Piotr Jastrzebski
10aa9a0e24 Cleanup ziparchive
Addressed review comments from 8e08536108

Change-Id: If576e2d6cc5ad330a7dee66b09663e0c04ea3801
2014-08-19 10:58:03 +01:00
Piotr Jastrzebski
8e08536108 Fix win_sdk build by not using vector
Change-Id: I4e9ee4286ea29e1f5f2ee477525e79bfa16ad9a0
2014-08-18 14:04:56 +01:00
Piotr Jastrzebski
ecccc5ad93 Replace char* with ZipEntryName in ziparchive API.
It's important because entry names can be encoded in UTF-8 and can have \0
character in the middle.
Use vector instead of char* for prefix in IterationHandle.

Bug: 16162465
Change-Id: Ie34c8d7c6231cc258530c22bdde5542895213649
2014-08-15 12:39:45 +01:00
Piotr Jastrzebski
bd0a74854e Revert "Make sure that names of all entries have the same encoding."
This reverts commit 6a7f4bb79d.

Change-Id: Id4f5b601ff0b9d82ce2c9beeb9162eba9594b3a7
2014-08-13 09:49:25 +00:00
Piotr Jastrzebski
6a7f4bb79d Make sure that names of all entries have the same encoding.
Add new public method to allow checkisc if an archive has entry names encoded in
UTF-8. If not then they will be encoded in IBM PC character encoding.

Bug: 16162465
Change-Id: I4468d76accca8a9b0b31cae8d43399ffc22cad42
2014-08-13 09:58:16 +01:00
Piotr Jastrzebski
34e03bdfdf Make a copy of a prefix param in StartIteration
and delete it in EndIteration.

Change-Id: I4de4167700a9dba3119fde22fcd45725742f3731
2014-08-11 14:20:24 +01:00
Piotr Jastrzebski
79c8b34f36 Add EndIteration method to free memory allocated
in StartIteration. This method should always be called when the
iteration is over to make sure that we don't leak memory.

Change-Id: I5205c754dfafbab9bb5f06003c3663d2ec4e8a35
2014-08-11 07:58:00 +01:00
Neil Fuller
0047368d7d Prevent the accidental closure of fd[0] for missing zip files.
(cherry picked from commit b1a113f618)
Bug: 16530747

Change-Id: I0d1be3dcadfa5128ffe04cec60f6c998dff61991
2014-07-28 08:41:26 +00:00
Neil Fuller
e91d9d80d1 Merge "Prevent the accidental closure of fd[0] for missing zip files." 2014-07-23 19:33:25 +00:00
Neil Fuller
b1a113f618 Prevent the accidental closure of fd[0] for missing zip files.
Bug: 16530747
Change-Id: I3593f2bc4d56a2f91252ea795c90ce3c78e1ec06
2014-07-25 16:06:20 +01:00
Tim Murray
06fce9db05 Update makefiles for host clang.
bug 16172793

Change-Id: If7484c5dbcccce7d925bec97bff0a3e4c30e9434
2014-07-24 12:18:22 -07:00
Ian Rogers
5af80aa119 Enable host multilib for ART testing.
Change-Id: Ic3ae5122eba13565fb5a4cb1bd0e7e465fb2140c
2014-06-17 01:50:25 -07:00
Narayan Kamath
926973ec14 Replace hand written offsets with structures.
Given that all current & future android ABIs are
little endian, we can get rid of the explicit conversions
from memory regions to little endian data members.

Also cleans up a few C style casts that snuck in during
several -Werror efforts and fixes temporary file generation
on target.

bug: 15448202

Change-Id: I4fcbb3c1124cb82c82139d328344e54fc7895353
2014-06-10 10:36:34 +01:00
Narayan Kamath
c00de56063 Fix build.
Uncommitted changes from a rename.

Change-Id: If1cac7104c436970f905eede683040ae79529292
2014-06-06 10:20:37 +00:00
Narayan Kamath
4f6b499ead Reject zip files that have trailing bytes after their CD.
bug: 15287086
Change-Id: I03219c4c2ca6afc9d417a35bd98ae682f478fc25
2014-06-05 18:37:08 +01:00
Ying Wang
cf86e2f85d Fix host 64-bit build.
Bug: 13751317
Change-Id: Ib42d24408d053bacc24142ed18fc5f3181d2345b
2014-05-16 09:36:17 -07:00
Mark Salyzyn
96c5c99bda libziparchive: off64_t is not int64_t (part deux)
Change-Id: I38e78bdba338a0c40aec43d6c86f26f388cee6ab
2014-05-08 19:16:40 -07:00
Mark Salyzyn
56a90a08db libziparchive: off64_t is not int64_t
- ToDo: investigate why our system headers let us down.

Change-Id: Iada422adbbbd4fbd0fc09b51b97b3cd06ccc6374
2014-05-08 17:20:55 -07:00
Mark Salyzyn
088bf90e5d libziparchive: 64 bit issues
Change-Id: I1b53aff5b1527a3623d17deed306624707d345ef
2014-05-08 16:06:54 -07:00
Mark Salyzyn
51d562d399 libziparchive: Turn on -Werror
Change-Id: I98a93273b9e1bac0324dd210f6a8493ba780e878
2014-05-07 16:56:21 -07:00
Mark Salyzyn
99ef9914be libziparchive: 64 bit compile issues
- All within LOG messages.

Change-Id: I52e81b49e8127276359c62febd4cc1d8d69102d9
2014-03-14 14:47:15 -07:00
Mathieu Chartier
5f98b12640 Add free to CloseArchive.
Currently CloseArchive doesn't call free and call sites don't appear
to either. I could not find any call sites which manually freed the
archive by deleting the handle. This fixes several memory leaks.

Change-Id: I21f187dde60fd87e6e54bde06de9e76fd0791104
2014-03-04 17:44:58 -08:00
Colin Cross
f4b0b7971c Fix logging errors inside ALOGV
Fix errors exposed by adding checking to disabled ALOGVs.

Change-Id: I36b77bb0ad8dc7661b0f834f20d1179b86134d57
2014-02-07 13:26:04 -08:00
Narayan Kamath
48953a1b8f Fix entry handling for 0 length entries.
Two minor issues were fixed:
- The offset to entry data can be the same as the
  central directory offset when the last entry in the
  file has length 0 and is stored (not deflated). Fix
  a check that disallowed this. We already have a strict
  check that entry data must end before the central directory,
  so we're covered.
- We would attempt to map a segment of length 0 when writing
  an entry whose length is 0. We should just return early in
  this case.

bug: 12623277
Change-Id: I2a4ca0c4d170cc3cbf326e5ca13894acd9c434c9
2014-01-24 13:41:55 +00:00
Elliott Hughes
f5447b0eb9 Merge "Fix a sporadic build breakage." 2014-01-03 21:08:01 +00:00
Narayan Kamath
95986aae91 Fix a sporadic build breakage.
The issue here is that the makefile sets LOCAL_LDFLAGS
and asks for -llog without declaring a dependency on it.
This will cause build breakages if liblog hasn't already
been built yet.

Change-Id: Ia38761cda44a38b6c2a88902d6108cbe64a328ce
2014-01-03 15:40:37 +00:00
Narayan Kamath
a1ff801e5f Change a debug log to a verbose log.
Unlike ALOGV, messages from ALOGD are logged on
all configurations. Not finding an entry in a zip
file is a "normal" occurrence so using an ALOGD
message for it amounts to spam.

Change-Id: I2c60d11e8a750be5106afd65c3c5e335f53f01b6
2014-01-02 19:41:00 +00:00
Narayan Kamath
00a258cec7 Fix ExtractEntryToFile.
We would always write uncompressed data at offset 0 instead
of the current filedescriptor offset.

Also adds a unit-test & a clarifying comment on the API.

Change-Id: If44757e96dde504ce63d81b4dec7115fc6f6d5fb
2013-12-13 17:56:57 +00:00
Narayan Kamath
7d92b7cc65 Merge "Get rid of some log spam." 2013-12-12 17:19:40 +00:00
Narayan Kamath
f6a196522a Get rid of some log spam.
We don't need a warning if an entry isn't found in a zip
file. It can happen as part of normal operation.

Change-Id: I86c132a040371f36f0dd981b49c02b3173821439
2013-12-12 10:29:31 +00:00
Narayan Kamath
eaf988532b Use FileMap from libcutil instead of rolling our own.
Adds windows support as a side effect.

Change-Id: I912c1f980f284d01d4f3936291999646ddf6250a
2013-12-11 15:17:06 +00:00
Narayan Kamath
58aaf46e4d Add unit tests for libziparchive.
- Add a build rule for host tests
- Add basic tests for Find / Iterate and Extract
  for both deflated & stored entries.
- Fix an off by one error that the test uncovered.

Change-Id: If72009b1ea9791d5a265829f05c32ffe1c2752c4
2013-12-10 16:48:50 +00:00
Narayan Kamath
eb41ad212e Fix return code for ended iteration.
The API promises a return code of -1 for an
ended iteration and lower negative values for
errors.

Change-Id: I688a1ee2efad1bdfc6959cf27e49c0426ebf27f8
2013-12-09 16:26:36 +00:00
Narayan Kamath
7462f02f82 Unify zipfile implementations : Step 1.
Extract zip file processing logic from libdvm into a
standalone library.

This library is a stricter than the libdvm library in
several ways:
- Duplicate zip entry names are now disallowed. Files with
  such entries will fail to parse.
- We now verify CD file size information with the individual
  file header information. (This was pointed out as a deficiency
  of this implementation in past discussions.)
- We also add support for crc checking, which means we might
  need to parse the optional data descriptor footer (if one
  exists).

We also provide an API for iterating over the entries of
a zip file. This library is optimized for two use cases :

- Lookup for a single entry in the file, with the intention
  of processing or extracting the data associated with that
  entry
- Iterating over all entries in a file *and* processing
  / extracting their data.

Change-Id: Ia87de6184ef753cc470b0af755c47a4f92ac8198
2013-12-04 13:28:40 +00:00