Browse code

ole2: added debug message handler_otf stream -> tempfile

Kevin Lin authored on 2016/06/29 00:59:48
Showing 1 changed files
... ...
@@ -1230,9 +1230,17 @@ handler_otf(ole2_header_t * hdr, property_t * prop, const char *dir, cli_ctx * c
1230 1230
     current_block = prop->start_block;
1231 1231
     len = prop->size;
1232 1232
 
1233
+    if (cli_debug_flag) {
1234
+        if (!name)
1235
+            name = get_property_name2(prop->name, prop->name_size);
1236
+        cli_dbgmsg("OLE2 [handler_otf]: Dumping '%s' to '%s'\n", name, tempfile);
1237
+    }
1238
+
1233 1239
     buff = (unsigned char *)cli_malloc(1 << hdr->log2_big_block_size);
1234 1240
     if (!buff) {
1235 1241
         close(ofd);
1242
+        if (name)
1243
+            free(name);
1236 1244
         cli_unlink(tempfile);
1237 1245
         free(tempfile);
1238 1246
         return CL_EMEM;
... ...
@@ -1243,6 +1251,8 @@ handler_otf(ole2_header_t * hdr, property_t * prop, const char *dir, cli_ctx * c
1243 1243
         cli_errmsg("OLE2: OTF handler init bitset failed\n");
1244 1244
         free(buff);
1245 1245
         close(ofd);
1246
+        if (name)
1247
+            free(name);
1246 1248
         if (cli_unlink(tempfile)) {
1247 1249
             free(tempfile);
1248 1250
             return CL_EUNLINK;
... ...
@@ -1274,6 +1284,8 @@ handler_otf(ole2_header_t * hdr, property_t * prop, const char *dir, cli_ctx * c
1274 1274
             offset = (1 << hdr->log2_small_block_size) * (current_block % (1 << (hdr->log2_big_block_size - hdr->log2_small_block_size)));
1275 1275
             if (cli_writen(ofd, &buff[offset], MIN(len, 1 << hdr->log2_small_block_size)) != MIN(len, 1 << hdr->log2_small_block_size)) {
1276 1276
                 close(ofd);
1277
+                if (name)
1278
+                    free(name);
1277 1279
                 free(buff);
1278 1280
                 cli_bitset_free(blk_bitset);
1279 1281
                 if (cli_unlink(tempfile)) {
... ...
@@ -1293,6 +1305,8 @@ handler_otf(ole2_header_t * hdr, property_t * prop, const char *dir, cli_ctx * c
1293 1293
             if (cli_writen(ofd, buff, MIN(len, (1 << hdr->log2_big_block_size))) !=
1294 1294
                     MIN(len, (1 << hdr->log2_big_block_size))) {
1295 1295
                 close(ofd);
1296
+                if (name)
1297
+                    free(name);
1296 1298
                 free(buff);
1297 1299
                 cli_bitset_free(blk_bitset);
1298 1300
                 if (cli_unlink(tempfile)) {
... ...
@@ -1312,6 +1326,8 @@ handler_otf(ole2_header_t * hdr, property_t * prop, const char *dir, cli_ctx * c
1312 1312
     is_mso = likely_mso_stream(ofd);
1313 1313
     if (lseek(ofd, 0, SEEK_SET) == -1) {
1314 1314
         close(ofd);
1315
+        if (name)
1316
+            free(name);
1315 1317
         if (ctx && !(ctx->engine->keeptmp))
1316 1318
             cli_unlink(tempfile);
1317 1319
 
... ...
@@ -1324,7 +1340,8 @@ handler_otf(ole2_header_t * hdr, property_t * prop, const char *dir, cli_ctx * c
1324 1324
 #if HAVE_JSON
1325 1325
     /* JSON Output Summary Information */
1326 1326
     if (ctx->options & CL_SCAN_FILE_PROPERTIES && ctx->properties != NULL) {
1327
-        name = get_property_name2(prop->name, prop->name_size);
1327
+        if (!name)
1328
+            name = get_property_name2(prop->name, prop->name_size);
1328 1329
         if (name) {
1329 1330
             if (!strncmp(name, "_5_summaryinformation", 21)) {
1330 1331
                 cli_dbgmsg("OLE2: detected a '_5_summaryinformation' stream\n");