From e76817e77e443a934f321fa3d1e54a80606c8ee6 Mon Sep 17 00:00:00 2001
From: Jean-Marie Traissard <jim@lapin.org>
Date: Tue, 11 Nov 2008 15:00:18 +0000
Subject: [PATCH] If an avatar or vcard filename is > 48, use its hash for
 filename instead. I used the md5 method already in the same file. Fixes
 #4273.

---
 src/common/helpers.py | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/src/common/helpers.py b/src/common/helpers.py
index cd4d52aa74..b7c01ae007 100644
--- a/src/common/helpers.py
+++ b/src/common/helpers.py
@@ -841,18 +841,19 @@ def get_os_info():
 	return 'N/A'
 
 def sanitize_filename(filename):
-	'''makes sure the filename we will write does contain only
-	acceptable and latin characters'''
+	'''makes sure the filename we will write does contain only acceptable and 
+	latin characters, and is not too long (in that case hash it)'''
+	# 48 is the limit
+	if len(filename) > 48:
+		hash = hash_md5(filename)
+		filename = base64.b64encode(hash.digest())
+
 	filename = punycode_encode(filename) # make it latin chars only
 	filename = filename.replace('/', '_')
 	if os.name == 'nt':
 		filename = filename.replace('?', '_').replace(':', '_')\
 			.replace('\\', '_').replace('"', "'").replace('|', '_')\
 			.replace('*', '_').replace('<', '_').replace('>', '_')
-		# 48 is the limit
-		if len(filename) > 48:
-			extension = filename.split('.')[-1]
-			filename = filename[0:48]
 	
 	return filename
 
-- 
GitLab