Matej Habrnal c40d95
From 8f26482402179dc64b9488be05ef9686922446ec Mon Sep 17 00:00:00 2001
Matej Habrnal c40d95
From: Jakub Filak <jfilak@redhat.com>
Matej Habrnal c40d95
Date: Fri, 24 Jul 2015 13:50:00 +0200
Matej Habrnal c40d95
Subject: [PATCH] vmcore: read vmcore by chunks
Matej Habrnal c40d95
Matej Habrnal c40d95
Reading vmcore by lines was not a good idea and the switch to Python 3
Matej Habrnal c40d95
makes it impossible because of the binary format of that file (the file
Matej Habrnal c40d95
does not contain only valid Unicode strings and that raises
Matej Habrnal c40d95
UnicodeDecodeError from the for statement).
Matej Habrnal c40d95
Matej Habrnal c40d95
Signed-off-by: Jakub Filak <jfilak@redhat.com>
Matej Habrnal c40d95
---
Matej Habrnal c40d95
 src/hooks/abrt_harvest_vmcore.py.in | 9 ++++++---
Matej Habrnal c40d95
 1 file changed, 6 insertions(+), 3 deletions(-)
Matej Habrnal c40d95
Matej Habrnal c40d95
diff --git a/src/hooks/abrt_harvest_vmcore.py.in b/src/hooks/abrt_harvest_vmcore.py.in
Matej Habrnal c40d95
index c5e7d53..61a6e57 100644
Matej Habrnal c40d95
--- a/src/hooks/abrt_harvest_vmcore.py.in
Matej Habrnal c40d95
+++ b/src/hooks/abrt_harvest_vmcore.py.in
Matej Habrnal c40d95
@@ -214,9 +214,12 @@ def harvest_vmcore():
Matej Habrnal c40d95
         hashobj = hashlib.sha1()
Matej Habrnal c40d95
         # Iterate over the file a line at a time in order to not load the whole
Matej Habrnal c40d95
         # vmcore file
Matej Habrnal c40d95
-        with open(os.path.join(f_full, 'vmcore'), 'r') as corefile:
Matej Habrnal c40d95
-            for line in corefile:
Matej Habrnal c40d95
-                hashobj.update(line)
Matej Habrnal c40d95
+        with open(os.path.join(f_full, 'vmcore'), 'rb') as corefile:
Matej Habrnal c40d95
+            while True:
Matej Habrnal c40d95
+                chunk = corefile.read(8192)
Matej Habrnal c40d95
+                if not chunk:
Matej Habrnal c40d95
+                    break
Matej Habrnal c40d95
+                hashobj.update(chunk)
Matej Habrnal c40d95
 
Matej Habrnal c40d95
         dd = create_abrtd_info(destdirnew, hashobj.hexdigest())
Matej Habrnal c40d95
         if dd is None:
Matej Habrnal c40d95
-- 
Matej Habrnal c40d95
2.4.6
Matej Habrnal c40d95