r11282 - in packages/trunk/openarena-data/debian: . source
Simon McVittie
smcv at alioth.debian.org
Tue Aug 24 19:17:19 UTC 2010
Author: smcv
Date: 2010-08-24 19:17:03 +0000 (Tue, 24 Aug 2010)
New Revision: 11282
Added:
packages/trunk/openarena-data/debian/mp-pak0-449831c5.qvm
packages/trunk/openarena-data/debian/mp-pak0-73428e1b.qvm
packages/trunk/openarena-data/debian/mp-pak0-c8703d61.qvm
packages/trunk/openarena-data/debian/pak0-37554497.qvm
packages/trunk/openarena-data/debian/pak0-b2b99e5d.qvm
packages/trunk/openarena-data/debian/pak0-d2225dd5.qvm
packages/trunk/openarena-data/debian/pak6-patch085-087acd9c.qvm
packages/trunk/openarena-data/debian/pak6-patch085-438cf2c5.qvm
packages/trunk/openarena-data/debian/pak6-patch085-6602cd55.qvm
Removed:
packages/trunk/openarena-data/debian/087acd9c.qvm
packages/trunk/openarena-data/debian/37554497.qvm
packages/trunk/openarena-data/debian/438cf2c5.qvm
packages/trunk/openarena-data/debian/449831c5.qvm
packages/trunk/openarena-data/debian/6602cd55.qvm
packages/trunk/openarena-data/debian/73428e1b.qvm
packages/trunk/openarena-data/debian/b2b99e5d.qvm
packages/trunk/openarena-data/debian/c8703d61.qvm
packages/trunk/openarena-data/debian/d2225dd5.qvm
Modified:
packages/trunk/openarena-data/debian/changelog
packages/trunk/openarena-data/debian/qvmbrute.c
packages/trunk/openarena-data/debian/rules
packages/trunk/openarena-data/debian/source/include-binaries
Log:
Encode a search prefix into the fake QVM files so we can load different
native code; OA 0.8.1 and 0.8.5 turn out not to be network-compatible.
(When combined with changes to openarena, this will close #592965)
Deleted: packages/trunk/openarena-data/debian/087acd9c.qvm
===================================================================
(Binary files differ)
Deleted: packages/trunk/openarena-data/debian/37554497.qvm
===================================================================
(Binary files differ)
Deleted: packages/trunk/openarena-data/debian/438cf2c5.qvm
===================================================================
(Binary files differ)
Deleted: packages/trunk/openarena-data/debian/449831c5.qvm
===================================================================
(Binary files differ)
Deleted: packages/trunk/openarena-data/debian/6602cd55.qvm
===================================================================
(Binary files differ)
Deleted: packages/trunk/openarena-data/debian/73428e1b.qvm
===================================================================
(Binary files differ)
Deleted: packages/trunk/openarena-data/debian/b2b99e5d.qvm
===================================================================
(Binary files differ)
Deleted: packages/trunk/openarena-data/debian/c8703d61.qvm
===================================================================
(Binary files differ)
Modified: packages/trunk/openarena-data/debian/changelog
===================================================================
--- packages/trunk/openarena-data/debian/changelog 2010-08-24 00:58:41 UTC (rev 11281)
+++ packages/trunk/openarena-data/debian/changelog 2010-08-24 19:17:03 UTC (rev 11282)
@@ -1,3 +1,11 @@
+openarena-data (0.8.5-3) unstable; urgency=low
+
+ * Encode a search prefix into the fake QVM files so we can load different
+ native code; OA 0.8.1 and 0.8.5 turn out not to be network-compatible.
+ (When combined with changes to openarena, this will close #592965)
+
+ -- Simon McVittie <smcv at debian.org> Tue, 24 Aug 2010 20:16:33 +0100
+
openarena-data (0.8.5-2) unstable; urgency=low
* Include directory entries explicitly in the repacked PK3 files, so the
Deleted: packages/trunk/openarena-data/debian/d2225dd5.qvm
===================================================================
(Binary files differ)
Added: packages/trunk/openarena-data/debian/mp-pak0-449831c5.qvm
===================================================================
(Binary files differ)
Property changes on: packages/trunk/openarena-data/debian/mp-pak0-449831c5.qvm
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: packages/trunk/openarena-data/debian/mp-pak0-73428e1b.qvm
===================================================================
(Binary files differ)
Property changes on: packages/trunk/openarena-data/debian/mp-pak0-73428e1b.qvm
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: packages/trunk/openarena-data/debian/mp-pak0-c8703d61.qvm
===================================================================
(Binary files differ)
Property changes on: packages/trunk/openarena-data/debian/mp-pak0-c8703d61.qvm
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: packages/trunk/openarena-data/debian/pak0-37554497.qvm
===================================================================
(Binary files differ)
Property changes on: packages/trunk/openarena-data/debian/pak0-37554497.qvm
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: packages/trunk/openarena-data/debian/pak0-b2b99e5d.qvm
===================================================================
(Binary files differ)
Property changes on: packages/trunk/openarena-data/debian/pak0-b2b99e5d.qvm
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: packages/trunk/openarena-data/debian/pak0-d2225dd5.qvm
===================================================================
(Binary files differ)
Property changes on: packages/trunk/openarena-data/debian/pak0-d2225dd5.qvm
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: packages/trunk/openarena-data/debian/pak6-patch085-087acd9c.qvm
===================================================================
(Binary files differ)
Property changes on: packages/trunk/openarena-data/debian/pak6-patch085-087acd9c.qvm
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: packages/trunk/openarena-data/debian/pak6-patch085-438cf2c5.qvm
===================================================================
(Binary files differ)
Property changes on: packages/trunk/openarena-data/debian/pak6-patch085-438cf2c5.qvm
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: packages/trunk/openarena-data/debian/pak6-patch085-6602cd55.qvm
===================================================================
(Binary files differ)
Property changes on: packages/trunk/openarena-data/debian/pak6-patch085-6602cd55.qvm
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Modified: packages/trunk/openarena-data/debian/qvmbrute.c
===================================================================
--- packages/trunk/openarena-data/debian/qvmbrute.c 2010-08-24 00:58:41 UTC (rev 11281)
+++ packages/trunk/openarena-data/debian/qvmbrute.c 2010-08-24 19:17:03 UTC (rev 11282)
@@ -1,5 +1,7 @@
/* Attempt to find CRC-32 collisions for QVM files.
*
+ * Usage: qvmbrute.c DESIRED-CRC [OUTPUT-FILENAME [SUBDIRECTORY]]
+ *
* Copyright 2010 Simon McVittie <smcv at debian.org>
* Copying and distribution of this file, with or without modification, are
* permitted in any medium without royalty provided this notice is preserved.
@@ -19,21 +21,40 @@
main (int argc, char **argv)
{
u_int32_t i;
- unsigned char qvm[] = { 'N', 'T', 'V', 'E', 0, 0, 0, 0,
- 'c', 'c', 'c', 'c', 'x', 'x', 'x', 'x' };
+ unsigned char qvm[1024] = { 0 };
u_int32_t target = strtoul (argv[1], NULL, 0);
+ char *subdir = "";
+ size_t fixed_len;
u_int32_t crc;
- /* calculate CRC of first 8 bytes */
- crc = crc32 (crc32 (0, NULL, 0), qvm, 8);
+ /* subdirectory to embed in the dummy file */
+ if (argc > 3) {
+ subdir = argv[3];
+ }
+
+ /* length of fixed part */
+ fixed_len = strlen (subdir) + 8;
+
+ /* The fixed part is "NTVE" + subdir + four reserved '\0' bytes
+ * (the first of which acts as '\0' termination for subdir).
+ *
+ * CCCC is replaced by the complement of the CRC-32 of the fixed part,
+ * yielding crc32 (fixed part + CCCC) = FFFFFFFF.
+ * XXXX is replaced by a brute-forced number such that
+ * crc32 (fixed part + CCCC + XXXX) is as desired. */
+ snprintf ((char *) qvm, sizeof (qvm) - 1, "NTVE%s%c%c%c%cCCCCXXXX",
+ subdir, 0, 0, 0, 0);
+
+ /* calculate CRC of first fixed_len bytes */
+ crc = crc32 (crc32 (0, NULL, 0), qvm, fixed_len);
/* put the complement of it, in little-endian, in the next 4 */
- qvm[8] = ~(crc & 0xFF);
- qvm[9] = ~((crc >> 8) & 0xFF);
- qvm[10] = ~((crc >> 16) & 0xFF);
- qvm[11] = ~((crc >> 24) & 0xFF);
- /* by mathematical properties of CRC32, the CRC of those 12 bytes is
+ qvm[fixed_len + 0] = ~(crc & 0xFF);
+ qvm[fixed_len + 1] = ~((crc >> 8) & 0xFF);
+ qvm[fixed_len + 2] = ~((crc >> 16) & 0xFF);
+ qvm[fixed_len + 3] = ~((crc >> 24) & 0xFF);
+ /* by mathematical properties of CRC32, the CRC up to that point is
* 0xFFFFFFFF */
- crc = crc32 (crc32 (0, NULL, 0), qvm, 12);
+ crc = crc32 (crc32 (0, NULL, 0), qvm, fixed_len + 4);
assert (crc == 0xFFFFFFFF);
/* it's possible to do the last bit by mathematics, but brute force
@@ -59,13 +80,14 @@
}
/* check our working */
- memcpy (qvm + 12, &i, 4);
- crc = crc32 (crc32 (0, NULL, 0), qvm, 16);
+ memcpy (qvm + fixed_len + 4, &i, 4);
+ crc = crc32 (crc32 (0, NULL, 0), qvm, fixed_len + 8);
assert (crc == target);
- printf ("crc32(\"NTVE\" 00000000 %.8x %.8x) == 0x%.8x\n",
- ntohl(*((u_int32_t *) (qvm + 8))),
- ntohl(*((u_int32_t *) (qvm + 12))),
+ printf ("crc32(\"NTVE%s\" 00000000 %.8x %.8x) == 0x%.8x\n",
+ subdir,
+ ntohl(*((u_int32_t *) (qvm + fixed_len))),
+ ntohl(*((u_int32_t *) (qvm + fixed_len + 4))),
crc);
if (argc > 2) {
@@ -75,7 +97,7 @@
f = fopen (argv[2], "w");
if (f == NULL ||
- fwrite (qvm, 16, 1, f) < 1 ||
+ fwrite (qvm, fixed_len + 8, 1, f) < 1 ||
fclose (f) < 0) {
perror ("writing fake QVM");
return 1;
Modified: packages/trunk/openarena-data/debian/rules
===================================================================
--- packages/trunk/openarena-data/debian/rules 2010-08-24 00:58:41 UTC (rev 11281)
+++ packages/trunk/openarena-data/debian/rules 2010-08-24 19:17:03 UTC (rev 11282)
@@ -12,12 +12,13 @@
set -e && \
cd debian && for c in baseoa/*.contents missionpack/*.contents; do \
pk3=$${c%.contents}; \
+ prefix=$$(basename $${pk3%.pk3}); \
dir=$${pk3%.pk3}; \
echo "adding any missing fake QVM files for $$c"; \
sed -n -e 's/#.*//; /\.qvm$$/p;' < $$c | \
while read crc filename; do \
- test -f $$crc.qvm || $(MAKE) -C .. -f debian/rules debian/$$crc.qvm; \
- cp $$crc.qvm ../$$dir/$$filename; \
+ test -f $$prefix-$$crc.qvm || $(MAKE) -C .. -f debian/rules QVMPREFIX=$$prefix QVMCRC=$$crc debian/$$prefix-$$crc.qvm; \
+ cp $$prefix-$$crc.qvm ../$$dir/$$filename; \
done; \
echo "compressing $$dir to $$pk3"; \
rm -f ../$$pk3; \
@@ -29,8 +30,8 @@
DEB_BUILD_GNU_TYPE := $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
-debian/%.qvm: debian/qvmbrute
- ./debian/qvmbrute 0x$* $@
+debian/$(QVMPREFIX)-$(QVMCRC).qvm: debian/qvmbrute
+ ./debian/qvmbrute 0x$(QVMCRC) $@ $(QVMPREFIX)
debian/qvmbrute: debian/qvmbrute.c
$(DEB_BUILD_GNU_TYPE)-gcc -Wall -lz -o debian/qvmbrute debian/qvmbrute.c
Modified: packages/trunk/openarena-data/debian/source/include-binaries
===================================================================
--- packages/trunk/openarena-data/debian/source/include-binaries 2010-08-24 00:58:41 UTC (rev 11281)
+++ packages/trunk/openarena-data/debian/source/include-binaries 2010-08-24 19:17:03 UTC (rev 11282)
@@ -1,9 +1,9 @@
-debian/087acd9c.qvm
-debian/37554497.qvm
-debian/438cf2c5.qvm
-debian/449831c5.qvm
-debian/6602cd55.qvm
-debian/73428e1b.qvm
-debian/b2b99e5d.qvm
-debian/c8703d61.qvm
-debian/d2225dd5.qvm
+debian/mp-pak0-449831c5.qvm
+debian/mp-pak0-73428e1b.qvm
+debian/mp-pak0-c8703d61.qvm
+debian/pak0-37554497.qvm
+debian/pak0-b2b99e5d.qvm
+debian/pak0-d2225dd5.qvm
+debian/pak6-patch085-087acd9c.qvm
+debian/pak6-patch085-438cf2c5.qvm
+debian/pak6-patch085-6602cd55.qvm
More information about the Pkg-games-commits
mailing list