diff --git a/src/packer.h b/src/packer.h index 53f29f64..cdf6948d 100644 --- a/src/packer.h +++ b/src/packer.h @@ -227,11 +227,13 @@ protected: int patchVersion(void *b, int blen); void checkPatch(void *b, int blen, int boff, int size); -protected: // relocation util virtual upx_byte *optimizeReloc32(upx_byte *in,unsigned relocnum,upx_byte *out,upx_byte *image,int bs,int *big); virtual unsigned unoptimizeReloc32(upx_byte **in,upx_byte *image,MemBuffer *out,int bs); + // UI util + virtual void updateCallbackSizes(unsigned *, unsigned *) const { } + protected: InputFile *fi; diff --git a/src/ui.cpp b/src/ui.cpp index 8e2d9541..0e7cb832 100644 --- a/src/ui.cpp +++ b/src/ui.cpp @@ -356,6 +356,8 @@ void UiPacker::doCallback(unsigned isize, unsigned osize) if (s->pass < 0) // no callback wanted return; + p->updateCallbackSizes(&isize, &osize); + if (s->u_len == 0 || isize > s->u_len) return; // check if we should update the display