summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--service/OneService.cpp15
1 files changed, 10 insertions, 5 deletions
diff --git a/service/OneService.cpp b/service/OneService.cpp
index 566b4750..0043204c 100644
--- a/service/OneService.cpp
+++ b/service/OneService.cpp
@@ -2455,11 +2455,16 @@ public:
// little effect on others.
f = fopen(p,"rb");
if (f) {
- char buf[65535];
- long l = (long)fread(buf,1,sizeof(buf),f);
- fclose(f);
- if ((l == (long)len)&&(memcmp(data,buf,l) == 0))
- return;
+ char *const buf = (char *)malloc(len*4);
+ if (buf) {
+ long l = (long)fread(buf,1,(size_t)(len*4),f);
+ fclose(f);
+ if ((l == (long)len)&&(memcmp(data,buf,l) == 0)) {
+ free(buf);
+ return;
+ }
+ free(buf);
+ }
}
f = fopen(p,"wb");