summaryrefslogtreecommitdiffstats
path: root/t/recipes/checks/languages/java/java-jars/build-spec/orig/generate-unparsable.pl
diff options
context:
space:
mode:
Diffstat (limited to 't/recipes/checks/languages/java/java-jars/build-spec/orig/generate-unparsable.pl')
-rw-r--r--t/recipes/checks/languages/java/java-jars/build-spec/orig/generate-unparsable.pl36
1 files changed, 36 insertions, 0 deletions
diff --git a/t/recipes/checks/languages/java/java-jars/build-spec/orig/generate-unparsable.pl b/t/recipes/checks/languages/java/java-jars/build-spec/orig/generate-unparsable.pl
new file mode 100644
index 0000000..eaed15b
--- /dev/null
+++ b/t/recipes/checks/languages/java/java-jars/build-spec/orig/generate-unparsable.pl
@@ -0,0 +1,36 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+# Generated with "hexdump -C <valid-file.zip> | head -n 10". Should
+# be a valid header of a truncated zip file. This is enough to fool
+# file 5.30 and earlier, but will obviously break if you try to parse
+# it in full.
+my $valid_header = <<'EOF';
+00000000 50 4b 03 04 0a 00 00 00 00 00 4c 59 9e 4a 00 00 |PK........LY.J..|
+00000010 00 00 00 00 00 00 00 00 00 00 04 00 1c 00 6f 72 |..............or|
+00000020 67 2f 55 54 09 00 03 20 c6 05 59 20 c6 05 59 75 |g/UT... ..Y ..Yu|
+00000030 78 0b 00 01 04 e8 03 00 00 04 e8 03 00 00 50 4b |x.............PK|
+00000040 03 04 0a 00 00 00 00 00 4c 59 9e 4a 00 00 00 00 |........LY.J....|
+00000050 00 00 00 00 00 00 00 00 0b 00 1c 00 6f 72 67 2f |............org/|
+00000060 64 65 62 69 61 6e 2f 55 54 09 00 03 20 c6 05 59 |debian/UT... ..Y|
+00000070 20 c6 05 59 75 78 0b 00 01 04 e8 03 00 00 04 e8 | ..Yux..........|
+00000080 03 00 00 50 4b 03 04 0a 00 00 00 00 00 4c 59 9e |...PK........LY.|
+00000090 4a 00 00 00 00 00 00 00 00 00 00 00 00 13 00 1c |J...............|
+EOF
+
+open(my $fd, '>', 'unparsable.jar');
+
+for my $line (split(m/\n/, $valid_header)) {
+ chomp($line);
+ next if $line =~ s/^\s*+(?:\#.*)?$//;
+ next if $line !~ s/^[0-9a-fA-F]+\s+//; # Remove leading "offset"
+ $line =~ s/\s*(?:\|.+\|\s*)?$//; # Remove trailing "display" part (if present)
+ for my $byte (split(m/\s++/, $line)) {
+ printf {$fd} '%c', hex($byte);
+ }
+}
+
+close($fd);
+