Update of /cvsroot/emacs-jabber/emacs-jabber
In directory sc8-pr-cvs17:/tmp/cvs-serv22380
Modified Files:
jabber-ft-server.el
Log Message:
Revision: ma...@fr...--2005/emacs-jabber--cvs-head--0--patch-364
Creator: Magnus Henoch <ma...@fr...>
Check MD5 hash of received files
Index: jabber-ft-server.el
===================================================================
RCS file: /cvsroot/emacs-jabber/emacs-jabber/jabber-ft-server.el,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -d -r1.13 -r1.14
--- jabber-ft-server.el 7 Feb 2007 13:49:38 -0000 1.13
+++ jabber-ft-server.el 3 Jun 2007 18:33:11 -0000 1.14
@@ -1,7 +1,7 @@
;; jabber-ft-server.el - handle incoming file transfers, by JEP-0096
+;; Copyright (C) 2003, 2004, 2007 - Magnus Henoch - ma...@fr...
;; Copyright (C) 2002, 2003, 2004 - tom berger - ob...@in...
-;; Copyright (C) 2003, 2004 - Magnus Henoch - ma...@fr...
;; This file is a part of jabber.el.
@@ -28,6 +28,9 @@
(defvar jabber-ft-size nil
"Size of the file that is being downloaded")
+(defvar jabber-ft-md5-hash nil
+ "MD5 hash of the file that is being downloaded")
+
(add-to-list 'jabber-advertised-features "http://jabber.org/protocol/si/profile/file-transfer")
(add-to-list 'jabber-si-profiles
@@ -78,8 +81,10 @@
(if (fboundp 'set-buffer-multibyte)
(set-buffer-multibyte nil))
(set-visited-file-name file-name t)
- (make-local-variable 'jabber-ft-size)
- (setq jabber-ft-size (string-to-number size)))
+ (set (make-local-variable 'jabber-ft-size)
+ (string-to-number size))
+ (set (make-local-variable 'jabber-ft-md5-hash)
+ md5-hash))
(add-to-list 'jabber-ft-sessions
(cons (list si-id from) buffer)))
@@ -107,7 +112,17 @@
(if (and data (< (buffer-size) jabber-ft-size))
t
(basic-save-buffer)
- (message "%s downloaded" (file-name-nondirectory buffer-file-name))
+ (if (and jabber-ft-md5-hash
+ (let ((file-hash (jabber-ft-get-md5 buffer-file-name)))
+ (and file-hash
+ (not (string= file-hash jabber-ft-md5-hash)))))
+ ;; hash mismatch!
+ (progn
+ (message "%s downloaded - CHECKSUM MISMATCH!"
+ (file-name-nondirectory buffer-file-name))
+ (sleep-for 5))
+ ;; all is fine
+ (message "%s downloaded" (file-name-nondirectory buffer-file-name)))
(kill-buffer buffer)
nil))))
|