67 lines
1.9 KiB
Diff
67 lines
1.9 KiB
Diff
diff -aur file-5.18/ChangeLog file.git/ChangeLog
|
|
--- file-5.18/ChangeLog 2014-03-26 16:27:39.000000000 +0100
|
|
+++ file.git/ChangeLog 2014-04-03 18:50:06.066659023 +0200
|
|
@@ -1,3 +1,7 @@
|
|
+2014-04-01 15:25 Christos Zoulas <christos@zoulas.com>
|
|
+
|
|
+ * PR/341: Jan Kaluza, fix memory leak
|
|
+ * PR/342: Jan Kaluza, fix out of bounds read
|
|
2014-03-26 11:25 Christos Zoulas <christos@zoulas.com>
|
|
|
|
* release 5.18
|
|
diff -aur file-5.18/src/apprentice.c file.git/src/apprentice.c
|
|
--- file-5.18/src/apprentice.c 2014-03-14 19:48:11.000000000 +0100
|
|
+++ file.git/src/apprentice.c 2014-04-03 18:50:06.086659024 +0200
|
|
@@ -517,14 +517,18 @@
|
|
{
|
|
if (map == NULL)
|
|
return;
|
|
- if (map->p == NULL)
|
|
- return;
|
|
+ if (map->p != NULL) {
|
|
#ifdef QUICK
|
|
- if (map->len)
|
|
- (void)munmap(map->p, map->len);
|
|
- else
|
|
+ if (map->len)
|
|
+ (void)munmap(map->p, map->len);
|
|
+ else
|
|
#endif
|
|
free(map->p);
|
|
+ } else {
|
|
+ uint32_t j;
|
|
+ for (j = 0; j < MAGIC_SETS; j++)
|
|
+ free(map->magic[j]);
|
|
+ }
|
|
free(map);
|
|
}
|
|
|
|
@@ -1290,11 +1294,7 @@
|
|
magic_entry_free(mset[j].me, mset[j].count);
|
|
|
|
if (errs) {
|
|
- for (j = 0; j < MAGIC_SETS; j++) {
|
|
- if (map->magic[j])
|
|
- free(map->magic[j]);
|
|
- }
|
|
- free(map);
|
|
+ apprentice_unmap(map);
|
|
return NULL;
|
|
}
|
|
return map;
|
|
diff -aur file-5.18/python/magic.py file.git/python/magic.py
|
|
--- file-5.18/python/magic.py 2014-04-04 20:34:38.086623965 +0200
|
|
+++ file.git/python/magic.py 2014-04-04 20:35:42.886623752 +0200
|
|
@@ -116,7 +116,10 @@
|
|
is set. A call to errno() will return the numeric error code.
|
|
"""
|
|
try: # attempt python3 approach first
|
|
- bi = bytes(filename, 'utf-8')
|
|
+ if isinstance(filename, bytes):
|
|
+ bi = filename
|
|
+ else:
|
|
+ bi = bytes(filename, 'utf-8')
|
|
return str(_file(self._magic_t, bi), 'utf-8')
|
|
except:
|
|
return _file(self._magic_t, filename.encode('utf-8'))
|