diff --git a/kpack_c.c b/kpack_c.c index b551353..e9a526f 100644 --- a/kpack_c.c +++ b/kpack_c.c @@ -41,7 +41,7 @@ unsigned pack_lzma(unsigned char *infile, unsigned char *outfile, unsigned insiz return outsize - 1; } -unsigned preprocess_calltrick(unsigned char *infile, unsigned insize, unsigned char ct1[256], unsigned *ct, unsigned char *ctn) +unsigned preprocess_calltrick(unsigned char *infile, unsigned insize, unsigned char ct1[256], unsigned *ctn, unsigned char *cti) { // TODO: check unsigned char *buf = malloc(2*insize); @@ -81,10 +81,20 @@ unsigned preprocess_calltrick(unsigned char *infile, unsigned insize, unsigned c } while(count > 0); + *ctn = edx; + unsigned idx = 0; + while (idx < 256 && ct1[idx] != 0) { + idx++; + } + if (idx >= 256) { + goto pack_calltrick_fail; + } + *cti = ~(unsigned char)256; + // TODO ! pack_calltrick_fail: - // ... + // TODO } @@ -216,7 +226,7 @@ int main(int argc, char *argv[]) outfilebest = outfile; unsigned method = METHOD_LZMA; - unsigned char ct1[256]; + unsigned char ct1[256]; // TODO zero out or place it zeroable space unsigned ctn; unsigned char cti;