diff --git a/src/p_vmlinz.cpp b/src/p_vmlinz.cpp index c0cf7122..181c73df 100644 --- a/src/p_vmlinz.cpp +++ b/src/p_vmlinz.cpp @@ -123,6 +123,9 @@ int PackVmlinuzI386::uncompressKernel() fi->seek(0, SEEK_SET); fi->readx(obuf, file_size); + if (find_le32(obuf + setup_size, UPX_MIN(file_size - setup_size, 1024), UPX_MAGIC_LE32) >= 0) + throwAlreadyPacked(); + // estimate gzip-uncompressed kernel size & alloc buffer ibuf.alloc((file_size - setup_size) * 3);